Test Suites

3 passed, 9 total

Tests

37 passed, 67 total

Snapshots

0 passed, 0 total

{ "additionalResultsProcessors": [], "resultDir": "./jest-stare/", "resultHtml": "index.html", "resultJson": "jest-results.json" }
{ "numFailedTestSuites": 6, "numFailedTests": 30, "numPassedTestSuites": 3, "numPassedTests": 37, "numPendingTestSuites": 0, "numPendingTests": 0, "numRuntimeErrorTestSuites": 0, "numTodoTests": 0, "numTotalTestSuites": 9, "numTotalTests": 67, "openHandles": [], "snapshot": { "added": 0, "didUpdate": false, "failure": false, "filesAdded": 0, "filesRemoved": 0, "filesRemovedList": [], "filesUnmatched": 0, "filesUpdated": 0, "matched": 0, "total": 0, "unchecked": 0, "uncheckedKeysByFile": [], "unmatched": 0, "updated": 0 }, "startTime": 1610827154833, "success": false, "testResults": [ { "leaks": false, "numFailingTests": 0, "numPassingTests": 17, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827161859, "runtime": 6144, "slow": true, "start": 1610827155715 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.test.js", "testResults": [ { "ancestorTitles": [ "POST /api/v1/company/" ], "duration": 328, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/company/ should fail to create a company for an unauthorized user", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to create a company for an unauthorized user" }, { "ancestorTitles": [ "POST /api/v1/company/" ], "duration": 144, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/company/ should fail to create a company missing description", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to create a company missing description" }, { "ancestorTitles": [ "POST /api/v1/company/" ], "duration": 226, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/company/ should create a company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should create a company" }, { "ancestorTitles": [ "PATCH /api/v1/company/:id" ], "duration": 144, "failureDetails": [], "failureMessages": [], "fullName": "PATCH /api/v1/company/:id should fail to update another persons company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to update another persons company" }, { "ancestorTitles": [ "PATCH /api/v1/company/:id" ], "duration": 184, "failureDetails": [], "failureMessages": [], "fullName": "PATCH /api/v1/company/:id should update company name", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should update company name" }, { "ancestorTitles": [ "PATCH /api/v1/company/:id" ], "duration": 133, "failureDetails": [], "failureMessages": [], "fullName": "PATCH /api/v1/company/:id should fail to update duplicate company name", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to update duplicate company name" }, { "ancestorTitles": [ "GET api/v1/company" ], "duration": 137, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company should not fetch companies for a non admin user", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should not fetch companies for a non admin user" }, { "ancestorTitles": [ "GET api/v1/company" ], "duration": 140, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company should fetch companies for admin user", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fetch companies for admin user" }, { "ancestorTitles": [ "PATCH /api/v1/company/:id" ], "duration": 131, "failureDetails": [], "failureMessages": [], "fullName": "PATCH /api/v1/company/:id should fail to update another persons company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to update another persons company" }, { "ancestorTitles": [ "PATCH /api/v1/company/:id" ], "duration": 168, "failureDetails": [], "failureMessages": [], "fullName": "PATCH /api/v1/company/:id should update company name", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should update company name" }, { "ancestorTitles": [ "PATCH /api/v1/company/:id" ], "duration": 142, "failureDetails": [], "failureMessages": [], "fullName": "PATCH /api/v1/company/:id should fail to update duplicate company name", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to update duplicate company name" }, { "ancestorTitles": [ "GET api/v1/company/:id" ], "duration": 21, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company/:id owner should not fetch another company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "owner should not fetch another company" }, { "ancestorTitles": [ "GET api/v1/company/:id" ], "duration": 21, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company/:id should fetch owner company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fetch owner company" }, { "ancestorTitles": [ "GET api/v1/company/:id" ], "duration": 26, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company/:id should return company to admin", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should return company to admin" }, { "ancestorTitles": [ "GET api/v1/company/mine" ], "duration": 22, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company/mine should fetch my companies", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fetch my companies" }, { "ancestorTitles": [ "DELETE api/v1/company/:id" ], "duration": 24, "failureDetails": [], "failureMessages": [], "fullName": "DELETE api/v1/company/:id owner should not delete anothers company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "owner should not delete anothers company" }, { "ancestorTitles": [ "DELETE api/v1/company/:id" ], "duration": 47, "failureDetails": [], "failureMessages": [], "fullName": "DELETE api/v1/company/:id should delete company", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should delete company" } ], "failureMessage": null, "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 6 }, { "startOffset": 391, "endOffset": 407, "count": 0 }, { "startOffset": 572, "endOffset": 578, "count": 1 }, { "startOffset": 629, "endOffset": 635, "count": 0 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1058, "endOffset": 1141, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 19 }, { "startOffset": 431, "endOffset": 544, "count": 1 }, { "startOffset": 544, "endOffset": 589, "count": 18 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 44 }, { "startOffset": 646, "endOffset": 745, "count": 11 }, { "startOffset": 747, "endOffset": 832, "count": 0 }, { "startOffset": 832, "endOffset": 942, "count": 11 }, { "startOffset": 942, "endOffset": 943, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 22 }, { "startOffset": 3178, "endOffset": 3196, "count": 11 }, { "startOffset": 3196, "endOffset": 3197, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 27 } ], "isBlockCoverage": true }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 81 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 }, { "startOffset": 246, "endOffset": 262, "count": 0 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 173, "endOffset": 372, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 273, "endOffset": 366, "count": 11 }, { "startOffset": 310, "endOffset": 331, "count": 0 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 }, { "startOffset": 336, "endOffset": 362, "count": 4 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 33 }, { "startOffset": 451, "endOffset": 501, "count": 16 }, { "startOffset": 503, "endOffset": 571, "count": 16 }, { "startOffset": 571, "endOffset": 680, "count": 1 }, { "startOffset": 680, "endOffset": 953, "count": 16 }, { "startOffset": 955, "endOffset": 1105, "count": 1 }, { "startOffset": 1105, "endOffset": 1206, "count": 15 }, { "startOffset": 1206, "endOffset": 1246, "count": 0 }, { "startOffset": 1246, "endOffset": 1249, "count": 15 } ], "isBlockCoverage": true }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 20 } ], "isBlockCoverage": true }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 81 } ], "isBlockCoverage": true }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFFQSxNQUFNUSxPQUFPLEdBQUdSLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qjs7QUFDQSxNQUFNUyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFDQSxNQUFNVSxLQUFLLEdBQUdWLE9BQU8sQ0FBQyxzQkFBRCxDQUFyQjs7QUFFQSxNQUFNVyxNQUFNLEdBQUdaLE9BQU8sQ0FBQ2EsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWYsQyxDQUlBOztBQUNBRixNQUFNLENBQUNHLEdBQVAsQ0FBVyx1QkFBWCxFQUFvQ04sT0FBcEM7QUFDQUcsTUFBTSxDQUFDRyxHQUFQLENBQVcsbUJBQVgsRUFBZ0NMLElBQWhDO0FBQ0FFLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLG9CQUFYLEVBQWlDSixLQUFqQztBQUVBQyxNQUFNLENBQUNJLElBQVAsQ0FBWSxHQUFaLEVBQWlCVixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDVSxLQUFOLENBQUQsQ0FBckIsRUFBcUNmLFlBQXJDLEVBQW1EZ0IsTUFBbkQ7QUFDQU4sTUFBTSxDQUFDTyxLQUFQLENBQWEsTUFBYixFQUFxQmIsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXpCLEVBQXlDZCxZQUF6QyxFQUF1RGlCLE1BQXZEO0FBQ0FSLE1BQU0sQ0FBQ1MsR0FBUCxDQUFXLEdBQVgsRUFBZ0JmLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sQ0FBRCxDQUFwQixFQUFvQ0MsZUFBcEM7QUFDQVgsTUFBTSxDQUFDUyxHQUFQLENBQVcsT0FBWCxFQUFvQmYsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXhCLEVBQXdDTyxjQUF4QztBQUNBWixNQUFNLENBQUNTLEdBQVAsQ0FBVyxNQUFYLEVBQW1CZixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDZSxLQUFOLEVBQWFmLElBQUksQ0FBQ1UsS0FBbEIsQ0FBRCxDQUF2QixFQUFtRFEsY0FBbkQ7QUFDQWIsTUFBTSxDQUFDYyxNQUFQLENBQWMsTUFBZCxFQUFzQnBCLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sRUFBYWYsSUFBSSxDQUFDVSxLQUFsQixDQUFELENBQTFCLEVBQXNEVSxjQUF0RDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJqQixNQUFqQjs7QUFFQSxTQUFTTSxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDO0FBQzVCRixFQUFBQSxHQUFHLENBQUNHLElBQUosQ0FBU0MsUUFBVCxHQUFvQkosR0FBRyxDQUFDSyxJQUFKLENBQVNDLEVBQTdCO0FBQ0FoQyxFQUFBQSxjQUFjLENBQ1RjLE1BREwsQ0FDWVksR0FBRyxDQUFDRyxJQURoQixFQUVLSSxJQUZMLENBRVdDLE9BQUQsSUFBYVAsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQsQ0FGdkIsRUFHS0UsS0FITCxDQUdXUixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsZUFBVCxDQUF5Qk8sR0FBekIsRUFBOEJDLEdBQTlCLEVBQW1DQyxJQUFuQyxFQUF5QztBQUNyQzVCLEVBQUFBLGNBQWMsQ0FDVG1CLGVBREwsR0FFS2MsSUFGTCxDQUVXSSxTQUFELElBQWU7QUFDakJWLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTL0IsV0FBVyxDQUFDc0IsR0FBRyxDQUFDSyxJQUFMLEVBQVdNLFNBQVgsQ0FBcEI7QUFDSCxHQUpMLEVBS0tELEtBTEwsQ0FLV1IsSUFMWDtBQU1IOztBQUNELFNBQVNSLGNBQVQsQ0FBd0JNLEdBQXhCLEVBQTZCQyxHQUE3QixFQUFrQ0MsSUFBbEMsRUFBd0M7QUFDcEM1QixFQUFBQSxjQUFjLENBQ1RvQixjQURMLENBQ29CTSxHQUFHLENBQUNLLElBQUosQ0FBU0MsRUFEN0IsRUFFS0MsSUFGTCxDQUVXSSxTQUFELElBQ0ZBLFNBQVMsR0FBR1YsR0FBRyxDQUFDUSxJQUFKLENBQVNFLFNBQVQsQ0FBSCxHQUF5QlYsR0FBRyxDQUFDVyxVQUFKLENBQWUsR0FBZixDQUgxQyxFQUtLRixLQUxMLENBS1dSLElBTFg7QUFNSDs7QUFDRCxTQUFTUCxjQUFULENBQXdCSyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1RxQixjQURMLENBQ29CSyxHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFEL0IsRUFFS0MsSUFGTCxDQUVXQyxPQUFELElBQWE7QUFDZixRQUNJQSxPQUFPLENBQUNKLFFBQVIsS0FBcUJKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQyxFQUE5QixJQUNBTixHQUFHLENBQUNLLElBQUosQ0FBU1MsSUFBVCxLQUFrQnJDLElBQUksQ0FBQ2UsS0FGM0IsRUFHRTtBQUNFLGFBQU9TLEdBQUcsQ0FBQ2MsTUFBSixDQUFXLEdBQVgsRUFBZ0JOLElBQWhCLENBQXFCO0FBQUVPLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQXJCLENBQVA7QUFDSDs7QUFFRGYsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQ7QUFDSCxHQVhMLEVBWUtFLEtBWkwsQ0FZV1IsSUFaWDtBQWFIOztBQUVELFNBQVNaLE1BQVQsQ0FBZ0JVLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUI7QUFDQTVCLEVBQUFBLGNBQWMsQ0FDVDJDLGFBREwsQ0FDbUI7QUFBRVgsSUFBQUEsRUFBRSxFQUFFTixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBakI7QUFBcUJGLElBQUFBLFFBQVEsRUFBRUosR0FBRyxDQUFDSyxJQUFKLENBQVNDO0FBQXhDLEdBRG5CLEVBQ2lFTixHQUFHLENBQUNHLElBRHJFLEVBRUtJLElBRkwsQ0FFV0MsT0FBRCxJQUFhUCxHQUFHLENBQUNRLElBQUosQ0FBU0QsT0FBVCxDQUZ2QixFQUdLRSxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxjQUFULENBQXdCRyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1Q0QyxPQURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1294, "endOffset": 1322, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1423, "endOffset": 1489, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1599, "endOffset": 1665, "count": 1 }, { "startOffset": 1644, "endOffset": 1665, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 3 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1842, "endOffset": 2042, "count": 3 }, { "startOffset": 1896, "endOffset": 1927, "count": 1 }, { "startOffset": 1929, "endOffset": 2014, "count": 1 }, { "startOffset": 2014, "endOffset": 2041, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 6 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2237, "endOffset": 2265, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2469, "endOffset": 2537, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 6 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 3 }, { "startOffset": 468, "endOffset": 470, "count": 1 }, { "startOffset": 470, "endOffset": 538, "count": 0 }, { "startOffset": 538, "endOffset": 613, "count": 1 }, { "startOffset": 613, "endOffset": 614, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 17 }, { "startOffset": 726, "endOffset": 744, "count": 6 }, { "startOffset": 744, "endOffset": 776, "count": 2 }, { "startOffset": 776, "endOffset": 860, "count": 4 }, { "startOffset": 861, "endOffset": 911, "count": 3 }, { "startOffset": 913, "endOffset": 1094, "count": 2 }, { "startOffset": 1094, "endOffset": 1095, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 2 }, { "startOffset": 1175, "endOffset": 1195, "count": 1 }, { "startOffset": 1195, "endOffset": 1196, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 2 }, { "startOffset": 1317, "endOffset": 1337, "count": 1 }, { "startOffset": 1337, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 6 }, { "startOffset": 1426, "endOffset": 1444, "count": 3 }, { "startOffset": 1444, "endOffset": 1445, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 5 }, { "startOffset": 1538, "endOffset": 1559, "count": 2 }, { "startOffset": 1559, "endOffset": 1667, "count": 1 }, { "startOffset": 1667, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 30 }, { "startOffset": 1913, "endOffset": 1931, "count": 15 }, { "startOffset": 1931, "endOffset": 1932, "count": 0 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 5 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 1 }, { "startOffset": 202, "endOffset": 260, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 225, "endOffset": 257, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQSxNQUFNVSxNQUFNLEdBQUdYLE9BQU8sQ0FBQ1ksTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWYsQyxDQUlBOztBQUNBRixNQUFNLENBQUNHLEdBQVAsQ0FBVyxvQkFBWCxFQUFpQ04sSUFBakMsRSxDQUVBOztBQUNBRyxNQUFNLENBQUNJLElBQVAsQ0FBWSxHQUFaLEVBQWlCVixJQUFJLENBQUMsQ0FBQ0UsSUFBSSxDQUFDUyxLQUFOLENBQUQsQ0FBckIsRUFBcUNWLE9BQU8sRUFBNUMsRUFBZ0RKLFlBQWhELEVBQThEZSxNQUE5RDtBQUNBTixNQUFNLENBQUNPLEdBQVAsQ0FBVyxHQUFYLEVBQWdCQyxzQkFBaEI7QUFDQVIsTUFBTSxDQUFDTyxHQUFQLENBQVcsTUFBWCxFQUFtQkUsZUFBbkI7QUFDQVQsTUFBTSxDQUFDVSxLQUFQLENBQWEsTUFBYixFQUFxQmhCLElBQUksQ0FBQyxDQUFDRSxJQUFJLENBQUNTLEtBQU4sQ0FBRCxDQUF6QixFQUF5Q1YsT0FBTyxFQUFoRCxFQUFvREgsWUFBcEQsRUFBa0VtQixNQUFsRTtBQUNBWCxNQUFNLENBQUNZLE1BQVAsQ0FBYyxNQUFkLEVBQXNCbEIsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ1MsS0FBTixDQUFELENBQTFCLEVBQTBDVixPQUFPLEVBQWpELEVBQXFEa0IsZUFBckQ7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZixNQUFqQjs7QUFFQSxTQUFTTSxNQUFULENBQWdCVSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDO0FBQzVCcEIsRUFBQUEsZUFBZSxDQUNWcUIsY0FETCxDQUNvQkgsR0FBRyxDQUFDSSxJQUR4QixFQUVLQyxJQUZMLENBRVdDLFFBQUQsSUFBY0wsR0FBRyxDQUFDTSxJQUFKLENBQVNELFFBQVQsQ0FGeEIsRUFHS0UsS0FITCxDQUdXTixJQUhYO0FBSUg7O0FBRUQsU0FBU1Ysc0JBQVQsQ0FBZ0NRLEdBQWhDLEVBQXFDQyxHQUFyQyxFQUEwQ0MsSUFBMUMsRUFBZ0Q7QUFDNUMsUUFBTU8sT0FBTyxHQUFHQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaLENBQXhCO0FBRUEzQixFQUFBQSxlQUFlLENBQ1ZVLHNCQURMLENBQzRCO0FBQUVpQixJQUFBQTtBQUFGLEdBRDVCLEVBRUtKLElBRkwsQ0FFV08sVUFBRCxJQUNGQSxVQUFVLEdBQUdYLEdBQUcsQ0FBQ00sSUFBSixDQUFTSyxVQUFULENBQUgsR0FBMEJYLEdBQUcsQ0FBQ1ksVUFBSixDQUFlLEdBQWYsQ0FINUMsRUFLS0wsS0FMTCxDQUtXTixJQUxYO0FBTUg7O0FBRUQsU0FBU1QsZUFBVCxDQUF5Qk8sR0FBekIsRUFBOEJDLEdBQTlCLEVBQW1DQyxJQUFuQyxFQUF5QztBQUNyQyxRQUFNWSxFQUFFLEdBQUdKLFFBQVEsQ0FBQ1YsR0FBRyxDQUFDVyxNQUFKLENBQVdHLEVBQVosQ0FBbkI7QUFDQWhDLEVBQUFBLGVBQWUsQ0FDVlcsZUFETCxDQUNxQnFCLEVBRHJCLEVBRUtULElBRkwsQ0FFV0MsUUFBRCxJQUNGQSxRQUFRLEdBQUdMLEdBQUcsQ0FBQ00sSUFBSixDQUFTRCxRQUFULENBQUgsR0FBd0JMLEdBQUcsQ0FBQ1ksVUFBSixDQUFlLEdBQWYsQ0FIeEMsRUFLS0wsS0FMTCxDQUtXTixJQUxYO0FBTUg7O0FBRUQsU0FBU1AsTUFBVCxDQUFnQkssR0FBaEIsRUFBcUJDLEdBQXJCLEVBQTBCQyxJQUExQixFQUFnQztBQUM1QjtBQUNBLFFBQU1hLE9BQU8sR0FBR2YsR0FBRyxDQUFDSSxJQUFwQjtBQUNBLFFBQU1VLEVBQUUsR0FBR0osUUFBUSxDQUFDVixHQUFHLENBQUNXLE1BQUosQ0FBV0csRUFBWixDQUFuQjtBQUNBQyxFQUFBQSxPQUFPLENBQUNOLE9BQVIsR0FBa0JDLFFBQVEsQ0FBQ1YsR0FBRyxDQUFDVyxNQUFKLENBQVdGLE9BQVosQ0FBMUI7QUFFQTNCLEVBQUFBLGVBQWUsQ0FDVmtDLGNBREwsQ0FDb0JGLEVBRHBCLEVBQ3dCQyxPQUR4QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 1, "numPassingTests": 10, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827164234, "runtime": 2199, "slow": false, "start": 1610827162035 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.test.js", "testResults": [ { "ancestorTitles": [ "POST /api/v1/accounts/register-owner" ], "duration": 30, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/accounts/register-owner should fail to create a user with missing fields", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to create a user with missing fields" }, { "ancestorTitles": [ "POST /api/v1/accounts/register-owner" ], "duration": 58, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/accounts/register-owner should fail to signup user with existing email", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to signup user with existing email" }, { "ancestorTitles": [ "POST /api/v1/accounts/register-owner" ], "duration": 151, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/accounts/register-owner should signup a user ", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should signup a user " }, { "ancestorTitles": [ "POST /api/v1/accounts/login" ], "duration": 121, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/accounts/login Should login user", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should login user" }, { "ancestorTitles": [ "POST /api/v1/accounts/login" ], "duration": 23, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/accounts/login Should not login user with wrong password", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should not login user with wrong password" }, { "ancestorTitles": [ "POST /api/v1/accounts/login" ], "duration": 21, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/accounts/login Should fail to login for a non existenst user", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should fail to login for a non existenst user" }, { "ancestorTitles": [ "POST fetch accounts" ], "duration": 144, "failureDetails": [], "failureMessages": [], "fullName": "POST fetch accounts Should return an array of users", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should return an array of users" }, { "ancestorTitles": [ "PUT/GET /api/v1/accounts/:id fetch account by id" ], "duration": 150, "failureDetails": [], "failureMessages": [], "fullName": "PUT/GET /api/v1/accounts/:id fetch account by id Should return the account of the user", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should return the account of the user" }, { "ancestorTitles": [ "PUT/GET /api/v1/accounts/:id fetch account by id" ], "duration": 148, "failureDetails": [], "failureMessages": [], "fullName": "PUT/GET /api/v1/accounts/:id fetch account by id Should not update the account of the admin", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should not update the account of the admin" }, { "ancestorTitles": [ "PUT/GET /api/v1/accounts/:id fetch account by id" ], "duration": 158, "failureDetails": [], "failureMessages": [], "fullName": "PUT/GET /api/v1/accounts/:id fetch account by id Should update the account of the owner", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should update the account of the owner" }, { "ancestorTitles": [ "POST /api/v1/accounts/ create staff " ], "duration": 311, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 500 \"Internal Server Error\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/accounts/ create staff owner should create a new user", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "owner should create a new user" } ], "failureMessage": "\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/accounts/ create staff › owner should create a new user\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 500 \"Internal Server Error\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n", "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 6 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1058, "endOffset": 1141, "count": 6 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1282, "endOffset": 1470, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2049, "endOffset": 2079, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 1 }, { "startOffset": 2276, "endOffset": 2352, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2396, "endOffset": 2456, "count": 1 }, { "startOffset": 2435, "endOffset": 2456, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2544, "endOffset": 2572, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 2 }, { "startOffset": 2771, "endOffset": 2847, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2900, "endOffset": 2928, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 4 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 3 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 28 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 6 }, { "startOffset": 1055, "endOffset": 1057, "count": 2 }, { "startOffset": 1057, "endOffset": 1500, "count": 1 }, { "startOffset": 1500, "endOffset": 1501, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 3 }, { "startOffset": 1880, "endOffset": 1882, "count": 1 }, { "startOffset": 1882, "endOffset": 1951, "count": 0 }, { "startOffset": 1951, "endOffset": 1996, "count": 1 }, { "startOffset": 1996, "endOffset": 2061, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 6 }, { "startOffset": 2149, "endOffset": 2203, "count": 2 }, { "startOffset": 2203, "endOffset": 2236, "count": 1 }, { "startOffset": 2237, "endOffset": 2289, "count": 1 }, { "startOffset": 2291, "endOffset": 2445, "count": 1 }, { "startOffset": 2445, "endOffset": 2501, "count": 0 }, { "startOffset": 2501, "endOffset": 2619, "count": 1 }, { "startOffset": 2619, "endOffset": 2620, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 2 }, { "startOffset": 2746, "endOffset": 2791, "count": 1 }, { "startOffset": 2791, "endOffset": 2792, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2769, "endOffset": 2789, "count": 4 } ], "isBlockCoverage": true }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 2 }, { "startOffset": 2873, "endOffset": 2905, "count": 1 }, { "startOffset": 2905, "endOffset": 2906, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 30 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 6 }, { "startOffset": 3431, "endOffset": 3757, "count": 2 }, { "startOffset": 3757, "endOffset": 3789, "count": 1 }, { "startOffset": 3789, "endOffset": 3790, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 4 }, { "startOffset": 3866, "endOffset": 3867, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 13 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 25 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 80 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 173, "endOffset": 372, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 273, "endOffset": 366, "count": 7 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 10 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFFQSxNQUFNUSxPQUFPLEdBQUdSLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qjs7QUFDQSxNQUFNUyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFDQSxNQUFNVSxLQUFLLEdBQUdWLE9BQU8sQ0FBQyxzQkFBRCxDQUFyQjs7QUFFQSxNQUFNVyxNQUFNLEdBQUdaLE9BQU8sQ0FBQ2EsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWYsQyxDQUlBOztBQUNBRixNQUFNLENBQUNHLEdBQVAsQ0FBVyx1QkFBWCxFQUFvQ04sT0FBcEM7QUFDQUcsTUFBTSxDQUFDRyxHQUFQLENBQVcsbUJBQVgsRUFBZ0NMLElBQWhDO0FBQ0FFLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLG9CQUFYLEVBQWlDSixLQUFqQztBQUVBQyxNQUFNLENBQUNJLElBQVAsQ0FBWSxHQUFaLEVBQWlCVixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDVSxLQUFOLENBQUQsQ0FBckIsRUFBcUNmLFlBQXJDLEVBQW1EZ0IsTUFBbkQ7QUFDQU4sTUFBTSxDQUFDTyxLQUFQLENBQWEsTUFBYixFQUFxQmIsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXpCLEVBQXlDZCxZQUF6QyxFQUF1RGlCLE1BQXZEO0FBQ0FSLE1BQU0sQ0FBQ1MsR0FBUCxDQUFXLEdBQVgsRUFBZ0JmLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sQ0FBRCxDQUFwQixFQUFvQ0MsZUFBcEM7QUFDQVgsTUFBTSxDQUFDUyxHQUFQLENBQVcsT0FBWCxFQUFvQmYsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXhCLEVBQXdDTyxjQUF4QztBQUNBWixNQUFNLENBQUNTLEdBQVAsQ0FBVyxNQUFYLEVBQW1CZixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDZSxLQUFOLEVBQWFmLElBQUksQ0FBQ1UsS0FBbEIsQ0FBRCxDQUF2QixFQUFtRFEsY0FBbkQ7QUFDQWIsTUFBTSxDQUFDYyxNQUFQLENBQWMsTUFBZCxFQUFzQnBCLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sRUFBYWYsSUFBSSxDQUFDVSxLQUFsQixDQUFELENBQTFCLEVBQXNEVSxjQUF0RDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJqQixNQUFqQjs7QUFFQSxTQUFTTSxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDO0FBQzVCRixFQUFBQSxHQUFHLENBQUNHLElBQUosQ0FBU0MsUUFBVCxHQUFvQkosR0FBRyxDQUFDSyxJQUFKLENBQVNDLEVBQTdCO0FBQ0FoQyxFQUFBQSxjQUFjLENBQ1RjLE1BREwsQ0FDWVksR0FBRyxDQUFDRyxJQURoQixFQUVLSSxJQUZMLENBRVdDLE9BQUQsSUFBYVAsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQsQ0FGdkIsRUFHS0UsS0FITCxDQUdXUixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsZUFBVCxDQUF5Qk8sR0FBekIsRUFBOEJDLEdBQTlCLEVBQW1DQyxJQUFuQyxFQUF5QztBQUNyQzVCLEVBQUFBLGNBQWMsQ0FDVG1CLGVBREwsR0FFS2MsSUFGTCxDQUVXSSxTQUFELElBQWU7QUFDakJWLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTL0IsV0FBVyxDQUFDc0IsR0FBRyxDQUFDSyxJQUFMLEVBQVdNLFNBQVgsQ0FBcEI7QUFDSCxHQUpMLEVBS0tELEtBTEwsQ0FLV1IsSUFMWDtBQU1IOztBQUNELFNBQVNSLGNBQVQsQ0FBd0JNLEdBQXhCLEVBQTZCQyxHQUE3QixFQUFrQ0MsSUFBbEMsRUFBd0M7QUFDcEM1QixFQUFBQSxjQUFjLENBQ1RvQixjQURMLENBQ29CTSxHQUFHLENBQUNLLElBQUosQ0FBU0MsRUFEN0IsRUFFS0MsSUFGTCxDQUVXSSxTQUFELElBQ0ZBLFNBQVMsR0FBR1YsR0FBRyxDQUFDUSxJQUFKLENBQVNFLFNBQVQsQ0FBSCxHQUF5QlYsR0FBRyxDQUFDVyxVQUFKLENBQWUsR0FBZixDQUgxQyxFQUtLRixLQUxMLENBS1dSLElBTFg7QUFNSDs7QUFDRCxTQUFTUCxjQUFULENBQXdCSyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1RxQixjQURMLENBQ29CSyxHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFEL0IsRUFFS0MsSUFGTCxDQUVXQyxPQUFELElBQWE7QUFDZixRQUNJQSxPQUFPLENBQUNKLFFBQVIsS0FBcUJKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQyxFQUE5QixJQUNBTixHQUFHLENBQUNLLElBQUosQ0FBU1MsSUFBVCxLQUFrQnJDLElBQUksQ0FBQ2UsS0FGM0IsRUFHRTtBQUNFLGFBQU9TLEdBQUcsQ0FBQ2MsTUFBSixDQUFXLEdBQVgsRUFBZ0JOLElBQWhCLENBQXFCO0FBQUVPLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQXJCLENBQVA7QUFDSDs7QUFFRGYsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQ7QUFDSCxHQVhMLEVBWUtFLEtBWkwsQ0FZV1IsSUFaWDtBQWFIOztBQUVELFNBQVNaLE1BQVQsQ0FBZ0JVLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUI7QUFDQTVCLEVBQUFBLGNBQWMsQ0FDVDJDLGFBREwsQ0FDbUI7QUFBRVgsSUFBQUEsRUFBRSxFQUFFTixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBakI7QUFBcUJGLElBQUFBLFFBQVEsRUFBRUosR0FBRyxDQUFDSyxJQUFKLENBQVNDO0FBQXhDLEdBRG5CLEVBQ2lFTixHQUFHLENBQUNHLElBRHJFLEVBRUtJLElBRkwsQ0FFV0MsT0FBRCxJQUFhUCxHQUFHLENBQUNRLElBQUosQ0FBU0QsT0FBVCxDQUZ2QixFQUdLRSxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxjQUFULENBQXdCRyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1Q0QyxPQURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 9, "numPassingTests": 1, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827166438, "runtime": 2128, "slow": false, "start": 1610827164310 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.test.js", "testResults": [ { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item" ], "duration": 222, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item should fail to create a category item for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to create a category item for another company" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item" ], "duration": 136, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 201 \"Created\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 201 \"Created\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 201 \"Created\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item should create a category item for your company menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should create a category item for your company menu" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item" ], "duration": 132, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item should fail to create a category item for your company menu with missing field", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to create a category item for your company menu with missing field" }, { "ancestorTitles": [ "GET/api/v1/company/:company_id/menu/:menu_id/category/:category_id/item" ], "duration": 27, "failureDetails": [], "failureMessages": [], "fullName": "GET/api/v1/company/:company_id/menu/:menu_id/category/:category_id/item should return 404 for a non existent item", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should return 404 for a non existent item" }, { "ancestorTitles": [ "GET/api/v1/company/:company_id/menu/:menu_id/category/:category_id/item" ], "duration": 19, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 404 \"Not Found\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "GET/api/v1/company/:company_id/menu/:menu_id/category/:category_id/item should return 200 for an existing item", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should return 200 for an existing item" }, { "ancestorTitles": [ "Patch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id" ], "duration": 132, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 404 \"Not Found\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "Patch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id should fail to update a category item for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to update a category item for another company" }, { "ancestorTitles": [ "Patch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id" ], "duration": 137, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "Patch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id should update a category item for your company menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should update a category item for your company menu" }, { "ancestorTitles": [ "Patch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id" ], "duration": 134, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 404 \"Not Found\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 404 \"Not Found\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 404 \"Not Found\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "Patch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id should not updated 404 for a non existent item menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should not updated 404 for a non existent item menu" }, { "ancestorTitles": [ "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id" ], "duration": 128, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id should fail to delete a category item for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to delete a category item for another company" }, { "ancestorTitles": [ "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id" ], "duration": 141, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id should delete a category item for your company menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should delete a category item for your company menu" } ], "failureMessage": "\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item › should fail to create a category item for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item › should create a category item for your company menu\u001b[39m\u001b[22m\n\n expected 201 \"Created\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item › should fail to create a category item for your company menu with missing field\u001b[39m\u001b[22m\n\n expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGET/api/v1/company/:company_id/menu/:menu_id/category/:category_id/item › should return 200 for an existing item\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 404 \"Not Found\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPatch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id › should fail to update a category item for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 404 \"Not Found\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPatch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id › should update a category item for your company menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPatch /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id › should not updated 404 for a non existent item menu\u001b[39m\u001b[22m\n\n expected 404 \"Not Found\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDELETE /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id › should fail to delete a category item for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 200 \"OK\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDELETE /api/v1/company/:company_id/menu/:menu_id/category/:category_id/item/:id › should delete a category item for your company menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n", "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1058, "endOffset": 1141, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 10 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 32 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 16 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 16 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 48 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 173, "endOffset": 372, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 273, "endOffset": 366, "count": 8 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 16 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 16 }, { "startOffset": 1454, "endOffset": 1473, "count": 8 }, { "startOffset": 1473, "endOffset": 1593, "count": 5 }, { "startOffset": 1593, "endOffset": 1615, "count": 3 }, { "startOffset": 1615, "endOffset": 1655, "count": 0 }, { "startOffset": 1655, "endOffset": 1658, "count": 3 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 3 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 24 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFF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QURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 842, "endOffset": 876, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1002, "endOffset": 1053, "count": 2 }, { "startOffset": 1015, "endOffset": 1031, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1191, "endOffset": 1242, "count": 1 }, { "startOffset": 1204, "endOffset": 1220, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1380, "endOffset": 1450, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 2 }, { "startOffset": 346, "endOffset": 362, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 4 }, { "startOffset": 441, "endOffset": 478, "count": 2 }, { "startOffset": 478, "endOffset": 495, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 2 }, { "startOffset": 608, "endOffset": 629, "count": 1 }, { "startOffset": 629, "endOffset": 630, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 2 }, { "startOffset": 732, "endOffset": 733, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 4 }, { "startOffset": 895, "endOffset": 910, "count": 2 }, { "startOffset": 910, "endOffset": 911, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 17 } ], "isBlockCoverage": true }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 9, "numPassingTests": 2, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827168694, "runtime": 2144, "slow": false, "start": 1610827166550 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.test.js", "testResults": [ { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu/:menu_id/category/" ], "duration": 244, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu/:menu_id/category/ should fail to creat a category for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to creat a category for another company" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu/:menu_id/category/" ], "duration": 142, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu/:menu_id/category/ should create a category for your company menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should create a category for your company menu" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu/:menu_id/category/" ], "duration": 129, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu/:menu_id/category/ should fail to create a category with missing field", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to create a category with missing field" }, { "ancestorTitles": [ "GET /api/v1/company/:company_id/menu/:menu_id/category/" ], "duration": 27, "failureDetails": [], "failureMessages": [], "fullName": "GET /api/v1/company/:company_id/menu/:menu_id/category/ should return 404 for a non existent company categories", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should return 404 for a non existent company categories" }, { "ancestorTitles": [ "GET /api/v1/company/:company_id/menu/:menu_id/category/" ], "duration": 16, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 404 \"Not Found\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "GET /api/v1/company/:company_id/menu/:menu_id/category/ should return 200 exsting company categories", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should return 200 exsting company categories" }, { "ancestorTitles": [ "GET /api/v1/company/:company_id/menu/:menu_id/category/:id" ], "duration": 23, "failureDetails": [], "failureMessages": [], "fullName": "GET /api/v1/company/:company_id/menu/:menu_id/category/:id should return 404 for a non existent categories", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should return 404 for a non existent categories" }, { "ancestorTitles": [ "GET /api/v1/company/:company_id/menu/:menu_id/category/:id" ], "duration": 19, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 404 \"Not Found\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "GET /api/v1/company/:company_id/menu/:menu_id/category/:id should return 200 for existing company category", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should return 200 for existing company category" }, { "ancestorTitles": [ "PATCH /api/v1/company/:company_id/menu/:menu_id/category/:id" ], "duration": 145, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 404 \"Not Found\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "PATCH /api/v1/company/:company_id/menu/:menu_id/category/:id should not update another company category ", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should not update another company category " }, { "ancestorTitles": [ "PATCH /api/v1/company/:company_id/menu/:menu_id/category/:id" ], "duration": 133, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "PATCH /api/v1/company/:company_id/menu/:menu_id/category/:id should update category ", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should update category " }, { "ancestorTitles": [ "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:id" ], "duration": 142, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:id should delete another company category", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should delete another company category" }, { "ancestorTitles": [ "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:id" ], "duration": 147, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "DELETE /api/v1/company/:company_id/menu/:menu_id/category/:id should delete a category ", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should delete a category " } ], "failureMessage": "\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu/:menu_id/category/ › should fail to creat a category for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 500 \"Internal Server Error\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu/:menu_id/category/ › should create a category for your company menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu/:menu_id/category/ › should fail to create a category with missing field\u001b[39m\u001b[22m\n\n expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGET /api/v1/company/:company_id/menu/:menu_id/category/ › should return 200 exsting company categories\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 404 \"Not Found\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGET /api/v1/company/:company_id/menu/:menu_id/category/:id › should return 200 for existing company category\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 404 \"Not Found\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPATCH /api/v1/company/:company_id/menu/:menu_id/category/:id › should not update another company category \u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 404 \"Not Found\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPATCH /api/v1/company/:company_id/menu/:menu_id/category/:id › should update category \u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDELETE /api/v1/company/:company_id/menu/:menu_id/category/:id › should delete another company category\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 200 \"OK\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDELETE /api/v1/company/:company_id/menu/:menu_id/category/:id › should delete a category \u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n", "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1058, "endOffset": 1141, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFHLENBQUNXLE1BQUosR0FBYUksR0FBYixDQUFpQixDQUFqQixFQUFvQkgsUUFBcEIsRUFOWTtBQU90Qk8sSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDVyxNQUFKLEdBQWFTLEtBQWIsQ0FBbUJwQixHQUFHLENBQUNxQixHQUFKLENBQVEsVUFBUixDQUFuQixFQUF3Q1QsUUFBeEM7QUFQSyxHQUFYLENBQWY7QUFTQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FYRDs7QUFhQUwsT0FBTyxDQUFDbUIsWUFBUixHQUF1QixDQUFDakIsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlEsSUFBQUEsS0FBSyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsR0FBcUJMLFFBQXJCLEVBRGU7QUFFdEJNLElBQUFBLFFBQVEsRUFBRWxCLEdBQUcsQ0FBQ1csTUFBSixHQUFhSSxHQUFiLENBQWlCLENBQWpCLEVBQW9CSCxRQUFwQjtBQUZZLEdBQVgsQ0FBZjtBQUlBVixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQU5EOztBQVFBTCxPQUFPLENBQUNvQixZQUFSLEdBQXVCLENBQUNsQixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNaUIsV0FBVyxHQUFHO0FBQ2hCZCxJQUFBQSxTQUFTLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhYyxLQUFiLENBQW1CLEVBQW5CLENBREs7QUFFaEJaLElBQUFBLFFBQVEsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFjLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGTTtBQUdoQlIsSUFBQUEsS0FBSyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsR0FBcUJRLEtBQXJCLENBQTJCLEVBQTNCLENBSFM7QUFJaEJDLElBQUFBLElBQUksRUFBRTFCLEdBQUcsQ0FBQ1csTUFBSixHQUFhSSxHQUFiLENBQWlCLENBQWpCLEVBQW9CVSxLQUFwQixDQUEwQixFQUExQixDQUpVO0FBS2hCWCxJQUFBQSxXQUFXLEVBQUVkLEdBQUcsQ0FBQ1csTUFBSixHQUFhSSxHQUFiLENBQWlCLEVBQWpCLEVBQXFCQyxHQUFyQixDQUF5QixFQUF6QixFQUE2QlMsS0FBN0IsQ0FBbUMsRUFBbkMsQ0FMRztBQU1oQlAsSUFBQUEsUUFBUSxFQUFFbEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsQ0FBakIsRUFBb0JVLEtBQXBCLENBQTBCLEVBQTFCLENBTk07QUFPaEJOLElBQUFBLGVBQWUsRUFBRW5CLEdBQUcsQ0FBQ1csTUFBSixHQUFhUyxLQUFiLENBQW1CcEIsR0FBRyxDQUFDcUIsR0FBSixDQUFRLFVBQVIsQ0FBbkIsRUFBd0NJLEtBQXhDLENBQThDLEVBQTlDO0FBUEQsR0FBcEIsQ0FEdUMsQ0FXdkM7O0FBQ0EsUUFBTWpCLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdlLFdBQVgsRUFBd0JHLElBQXhCLENBQTZCLFVBQTdCLEVBQXlDLGlCQUF6QyxDQUFmO0FBRUF6QixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWZEOztBQWlCQUwsT0FBTyxDQUFDeUIsaUJBQVIsR0FBNEIsQ0FBQ3ZCLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQzVDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJvQixJQUFBQSxLQUFLLEVBQUU3QixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYjtBQURlLEdBQVgsQ0FBZjtBQUdBVixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQUxEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 9 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5COztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxTQUFTLEdBQUdKLE9BQU8sQ0FBQyxtQkFBRCxDQUF6Qjs7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2I7Ozs7Ozs7O0FBUUFDLEVBQUFBLEtBVGE7QUFVYkMsRUFBQUEsUUFWYTtBQVdiQyxFQUFBQSxXQVhhO0FBWWJDLEVBQUFBLE1BWmE7QUFhYkMsRUFBQUEsTUFiYTtBQWNiQyxFQUFBQSxNQWRhO0FBZWJDLEVBQUFBLE9BZmE7QUFnQmJDLEVBQUFBLE1BQU0sRUFBRUM7QUFoQkssQ0FBakI7O0FBbUJBLGVBQWVSLEtBQWYsQ0FBcUI7QUFBRVMsRUFBQUEsS0FBRjtBQUFTQyxFQUFBQTtBQUFULENBQXJCLEVBQTBDO0FBQ3RDLFFBQU1DLE9BQU8sR0FBRyxNQUFNQyxVQUFVLENBQUM7QUFBRUgsSUFBQUE7QUFBRixHQUFELENBQWhDOztBQUVBLE1BQ0ksQ0FBQ0UsT0FBRCxJQUNBO0FBQ0EsSUFBRSxNQUFNaEIsTUFBTSxDQUFDa0IsT0FBUCxDQUFlSCxRQUFmLEVBQXlCQyxPQUFPLENBQUNELFFBQWpDLENBQVIsQ0FISixFQUlFO0FBQ0UsVUFBTUksS0FBSyxHQUFHLElBQUlDLEtBQUosQ0FBVSxnQ0FBVixDQUFkO0FBQ0EsVUFBTUQsS0FBTjtBQUNIOztBQUVELFFBQU1FLEtBQUssR0FBRyxNQUFNdEIsR0FBRyxDQUFDdUIsSUFBSixDQUFTTixPQUFPLENBQUNPLE1BQVIsRUFBVCxDQUFwQjtBQUVBLFNBQU87QUFDSEMsSUFBQUEsSUFBSSxFQUFFQyxZQUFZLENBQUNULE9BQUQsQ0FEZjtBQUVISyxJQUFBQTtBQUZHLEdBQVA7QUFJSDs7QUFFRCxlQUFlZixRQUFmLENBQXdCb0IsTUFBeEIsRUFBZ0NDLE1BQWhDLEVBQXdDO0FBQ3BDO0FBQ0EsTUFBSSxNQUFNVixVQUFVLENBQUM7QUFBRUgsSUFBQUEsS0FBSyxFQUFFWSxNQUFNLENBQUNaO0FBQWhCLEdBQUQsQ0FBcEIsRUFBK0M7QUFDM0M7QUFDQTtBQUNBLFVBQU1LLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQ1YsWUFBWU0sTUFBTSxDQUFDWixLQUFuQixHQUEyQix5QkFEakIsQ0FBZDtBQUlBLFVBQU1LLEtBQU47QUFDSDs7QUFFRCxRQUFNSCxPQUFPLEdBQUcsTUFBTVksVUFBVSxDQUFDRixNQUFELENBQWhDLENBWm9DLENBY3BDO0FBQ0E7O0FBRUEsUUFBTUwsS0FBSyxHQUFHLE1BQU10QixHQUFHLENBQUN1QixJQUFKLENBQVNOLE9BQVQsQ0FBcEI7QUFFQSxTQUFPO0FBQ0hRLElBQUFBLElBQUksRUFBRVIsT0FESDtBQUVISyxJQUFBQTtBQUZHLEdBQVA7QUFJSDs7QUFFRCxlQUFlZCxXQUFmLENBQTJCO0FBQUVjLEVBQUFBO0FBQUYsQ0FBM0IsRUFBc0M7QUFDbEMsUUFBTUwsT0FBTyxHQUFHLE1BQU1DLFVBQVUsQ0FBQztBQUFFWSxJQUFBQSxpQkFBaUIsRUFBRVI7QUFBckIsR0FBRCxDQUFoQztBQUVBLE1BQUksQ0FBQ0wsT0FBTCxFQUFjLE1BQU0scUJBQU47QUFFZCxRQUFNQSxPQUFPLENBQUNjLE1BQVIsR0FBaUJDLEtBQWpCLENBQXVCO0FBQ3pCQyxJQUFBQSxRQUFRLEVBQUVDLElBQUksQ0FBQ0MsR0FBTCxFQURlO0FBRXpCQyxJQUFBQSxVQUFVLEVBQUUsSUFGYTtBQUd6Qk4sSUFBQUEsaUJBQWlCLEVBQUU7QUFITSxHQUF2QixDQUFOO0FBS0g7O0FBRUQsZUFBZXJCLE1BQWYsQ0FBc0JrQixNQUF0QixFQUE4QjtBQUMxQjtBQUNBLE1BQUksTUFBTVQsVUFBVSxDQUFDO0FBQUVILElBQUFBLEtBQUssRUFBRVksTUFBTSxDQUFDWjtBQUFoQixHQUFELENBQXBCLEVBQStDO0FBQzNDLFVBQU0sWUFBWVksTUFBTSxDQUFDWixLQUFuQixHQUEyQix5QkFBakM7QUFDSDs7QUFFRCxRQUFNRSxPQUFPLEdBQUcsTUFBTVksVUFBVSxDQUFDRixNQUFELENBQWhDLENBTjBCLENBUTFCOztBQUVBLFNBQU9ELFlBQVksQ0FBQ1QsT0FBRCxDQUFuQjtBQUNIOztBQUVELGVBQWVQLE1BQWYsQ0FBc0IyQixFQUF0QixFQUEwQlYsTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVYsT0FBTyxHQUFHLE1BQU1DLFVBQVUsQ0FBQztBQUFFbUIsSUFBQUE7QUFBRixHQUFELENBQWhDLENBRDhCLENBRzlCOztBQUNBLE1BQ0lWLE1BQU0sQ0FBQ1osS0FBUCxJQUNBRSxPQUFPLENBQUNGLEtBQVIsS0FBa0JZLE1BQU0sQ0FBQ1osS0FEekIsS0FFQyxNQUFNRyxVQUFVLENBQUM7QUFBRUgsSUFBQUEsS0FBSyxFQUFFWSxNQUFNLENBQUNaO0FBQWhCLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0UsVUFBTUssS0FBSyxHQUFHLElBQUlDLEtBQUosQ0FBVyxTQUFRTSxNQUFNLENBQUNaLEtBQU0sbUJBQWhDLENBQWQ7QUFDQSxVQUFNSyxLQUFOO0FBQ0gsR0FYNkIsQ0FhOUI7OztBQUNBLE1BQUlPLE1BQU0sQ0FBQ1gsUUFBWCxFQUFxQjtBQUNqQlcsSUFBQUEsTUFBTSxDQUFDWCxRQUFQLEdBQWtCLE1BQU1zQixJQUFJLENBQUNYLE1BQU0sQ0FBQ1gsUUFBUixDQUE1QjtBQUNIOztBQUVELFFBQU11QixXQUFXLEdBQUcsTUFBTXpDLElBQUksQ0FBQzBDLEtBQUwsR0FBYUMsaUJBQWIsQ0FBK0JKLEVBQS9CLEVBQW1DLEVBQUUsR0FBR1Y7QUFBTCxHQUFuQyxDQUExQjtBQUVBLFNBQU9ELFlBQVksQ0FBQ2EsV0FBRCxDQUFuQjtBQUNILEMsQ0FFRDs7O0FBQ0EsZUFBZTVCLE1BQWYsR0FBd0I7QUFDcEIsUUFBTStCLFFBQVEsR0FBRyxNQUFNNUMsSUFBSSxDQUFDMEMsS0FBTCxFQUF2QjtBQUNBLFNBQU9FLFFBQVEsQ0FBQ0MsR0FBVCxDQUFjQyxDQUFELElBQU9sQixZQUFZLENBQUNrQixDQUFELENBQWhDLENBQVA7QUFDSDs7QUFFRCxlQUFlaEMsT0FBZixDQUF1QnlCLEVBQXZCLEVBQTJCO0FBQ3ZCLFFBQU1wQixPQUFPLEdBQUcsTUFBTUMsVUFBVSxDQUFDO0FBQUVtQixJQUFBQTtBQUFGLEdBQUQsQ0FBaEM7QUFDQSxTQUFPWCxZQUFZLENBQUNULE9BQUQsQ0FBbkI7QUFDSCxDLENBRUQ7OztBQUNBLGVBQWVILE9BQWYsQ0FBdUJ1QixFQUF2QixFQUEyQjtBQUN2QixRQUFNdkMsSUFBSSxDQUFDMEMsS0FBTCxHQUFhSyxVQUFiLENBQXdCUixFQUF4QixDQUFOO0FBQ0g7QUFFRDs7O0FBQ0EsZUFBZW5CLFVBQWYsQ0FBMEI0QixLQUExQixFQUFpQztBQUM3QixRQUFNN0IsT0FBTyxHQUFHLE1BQU1uQixJQUFJLENBQUMwQyxLQUFMLEdBQ2pCTyxLQURpQixDQUNYLEVBQUUsR0FBR0Q7QUFBTCxHQURXLEVBRWpCRSxLQUZpQixFQUF0QjtBQUdBLFNBQU8vQixPQUFQO0FBQ0g7O0FBRUQsZUFBZVksVUFBZixDQUEwQkYsTUFBMUIsRUFBa0M7QUFDOUIsUUFBTTtBQUFFc0IsSUFBQUEsU0FBRjtBQUFhQyxJQUFBQSxRQUFiO0FBQXVCbkMsSUFBQUEsS0FBdkI7QUFBOEJDLElBQUFBLFFBQTlCO0FBQXdDbUMsSUFBQUEsSUFBeEM7QUFBOENDLElBQUFBO0FBQTlDLE1BQThEekIsTUFBcEUsQ0FEOEIsQ0FHOUI7O0FBQ0EsUUFBTTBCLGNBQWMsR0FBRyxNQUFNZixJQUFJLENBQUN0QixRQUFELEVBQVcsRUFBWCxDQUFqQztBQUNBLFFBQU1jLGlCQUFpQixHQUFHd0IsaUJBQWlCLEVBQTNDLENBTDhCLENBTzlCOztBQUNBLFFBQU1yQyxPQUFPLEdBQUcsTUFBTW5CLElBQUksQ0FBQzBDLEtBQUwsR0FBYWUsTUFBYixDQUFvQjtBQUN0Q3hDLElBQUFBLEtBRHNDO0FBRXRDa0MsSUFBQUEsU0FGc0M7QUFHdENDLElBQUFBLFFBSHNDO0FBSXRDbEMsSUFBQUEsUUFBUSxFQUFFcUMsY0FKNEI7QUFLdENELElBQUFBLFdBTHNDO0FBTXRDRCxJQUFBQSxJQUFJLEVBQUVBLElBTmdDO0FBT3RDSyxJQUFBQSxNQUFNLEVBQUUsSUFQOEI7QUFRdENwQixJQUFBQSxVQUFVLEVBQUUsS0FSMEI7QUFTdENILElBQUFBLFFBQVEsRUFBRSxJQUFJQyxJQUFKLEdBQVd1QixXQUFYLEVBVDRCO0FBVXRDM0IsSUFBQUE7QUFWc0MsR0FBcEIsQ0FBdEI7QUFhQSxTQUFPSixZQUFZLENBQUNULE9BQUQsQ0FBbkI7QUFDSDs7QUFFRCxlQUFlcUIsSUFBZixDQUFvQnRCLFFBQXBCLEVBQThCO0FBQzFCLFNBQU8sTUFBTWYsTUFBTSxDQUFDcUMsSUFBUCxDQUFZdEIsUUFBWixFQUFzQixFQUF0QixDQUFiO0FBQ0g7O0FBRUQsU0FBU3NDLGlCQUFULEdBQTZCO0FBQ3pCLFNBQU9wRCxNQUFNLENBQUN3RCxXQUFQLENBQW1CLEVBQW5CLEVBQXVCQyxRQUF2QixDQUFnQyxLQUFoQyxDQUFQO0FBQ0g7O0FBRUQsU0FBU2pDLFlBQVQsQ0FBc0JULE9BQXRCLEVBQStCO0FBQzNCLFFBQU07QUFDRm9CLElBQUFBLEVBREU7QUFFRlksSUFBQUEsU0FGRTtBQUdGQyxJQUFBQSxRQUhFO0FBSUZuQyxJQUFBQSxLQUpFO0FBS0ZvQyxJQUFBQSxJQUxFO0FBTUZTLElBQUFBLE9BTkU7QUFPRkMsSUFBQUEsT0FQRTtBQVFGekIsSUFBQUE7QUFSRSxNQVNGbkIsT0FUSjtBQVVBLFNBQU87QUFDSG9CLElBQUFBLEVBREc7QUFFSFksSUFBQUEsU0FGRztBQUdIQyxJQUFBQSxRQUhHO0FBSUhuQyxJQUFBQSxLQUpHO0FBS0hvQyxJQUFBQSxJQUxHO0FBTUhTLElBQUFBLE9BTkc7QUFPSEMsSUFBQUEsT0FQRztBQVFIekIsSUFBQUE7QUFSRyxHQUFQO0FBVUg7O0FBRUQsZUFBZTBCLHFCQUFmLENBQXFDN0MsT0FBckMsRUFBOENXLE1BQTlDLEVBQXNEO0FBQ2xELE1BQUltQyxPQUFKOztBQUNBLE1BQUluQyxNQUFKLEVBQVk7QUFDUixVQUFNb0MsU0FBUyxHQUFJLEdBQUVwQyxNQUFPLDRCQUEyQlgsT0FBTyxDQUFDYSxpQkFBa0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 28 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 42 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 173, "endOffset": 372, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 273, "endOffset": 366, "count": 7 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 14 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 3 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 21 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFFQSxNQUFNUSxPQUFPLEdBQUdSLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qjs7QUFDQSxNQUFNUyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFDQSxNQUFNVSxLQUFLLEdBQUdWLE9BQU8sQ0FBQyxzQkFBRCxDQUFyQjs7QUFFQSxNQUFNVyxNQUFNLEdBQUdaLE9BQU8sQ0FBQ2EsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWYsQyxDQUlBOztBQUNBRixNQUFNLENBQUNHLEdBQVAsQ0FBVyx1QkFBWCxFQUFvQ04sT0FBcEM7QUFDQUcsTUFBTSxDQUFDRyxHQUFQLENBQVcsbUJBQVgsRUFBZ0NMLElBQWhDO0FBQ0FFLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLG9CQUFYLEVBQWlDSixLQUFqQztBQUVBQyxNQUFNLENBQUNJLElBQVAsQ0FBWSxHQUFaLEVBQWlCVixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDVSxLQUFOLENBQUQsQ0FBckIsRUFBcUNmLFlBQXJDLEVBQW1EZ0IsTUFBbkQ7QUFDQU4sTUFBTSxDQUFDTyxLQUFQLENBQWEsTUFBYixFQUFxQmIsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXpCLEVBQXlDZCxZQUF6QyxFQUF1RGlCLE1BQXZEO0FBQ0FSLE1BQU0sQ0FBQ1MsR0FBUCxDQUFXLEdBQVgsRUFBZ0JmLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sQ0FBRCxDQUFwQixFQUFvQ0MsZUFBcEM7QUFDQVgsTUFBTSxDQUFDUyxHQUFQLENBQVcsT0FBWCxFQUFvQmYsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXhCLEVBQXdDTyxjQUF4QztBQUNBWixNQUFNLENBQUNTLEdBQVAsQ0FBVyxNQUFYLEVBQW1CZixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDZSxLQUFOLEVBQWFmLElBQUksQ0FBQ1UsS0FBbEIsQ0FBRCxDQUF2QixFQUFtRFEsY0FBbkQ7QUFDQWIsTUFBTSxDQUFDYyxNQUFQLENBQWMsTUFBZCxFQUFzQnBCLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sRUFBYWYsSUFBSSxDQUFDVSxLQUFsQixDQUFELENBQTFCLEVBQXNEVSxjQUF0RDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJqQixNQUFqQjs7QUFFQSxTQUFTTSxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDO0FBQzVCRixFQUFBQSxHQUFHLENBQUNHLElBQUosQ0FBU0MsUUFBVCxHQUFvQkosR0FBRyxDQUFDSyxJQUFKLENBQVNDLEVBQTdCO0FBQ0FoQyxFQUFBQSxjQUFjLENBQ1RjLE1BREwsQ0FDWVksR0FBRyxDQUFDRyxJQURoQixFQUVLSSxJQUZMLENBRVdDLE9BQUQsSUFBYVAsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQsQ0FGdkIsRUFHS0UsS0FITCxDQUdXUixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsZUFBVCxDQUF5Qk8sR0FBekIsRUFBOEJDLEdBQTlCLEVBQW1DQyxJQUFuQyxFQUF5QztBQUNyQzVCLEVBQUFBLGNBQWMsQ0FDVG1CLGVBREwsR0FFS2MsSUFGTCxDQUVXSSxTQUFELElBQWU7QUFDakJWLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTL0IsV0FBVyxDQUFDc0IsR0FBRyxDQUFDSyxJQUFMLEVBQVdNLFNBQVgsQ0FBcEI7QUFDSCxHQUpMLEVBS0tELEtBTEwsQ0FLV1IsSUFMWDtBQU1IOztBQUNELFNBQVNSLGNBQVQsQ0FBd0JNLEdBQXhCLEVBQTZCQyxHQUE3QixFQUFrQ0MsSUFBbEMsRUFBd0M7QUFDcEM1QixFQUFBQSxjQUFjLENBQ1RvQixjQURMLENBQ29CTSxHQUFHLENBQUNLLElBQUosQ0FBU0MsRUFEN0IsRUFFS0MsSUFGTCxDQUVXSSxTQUFELElBQ0ZBLFNBQVMsR0FBR1YsR0FBRyxDQUFDUSxJQUFKLENBQVNFLFNBQVQsQ0FBSCxHQUF5QlYsR0FBRyxDQUFDVyxVQUFKLENBQWUsR0FBZixDQUgxQyxFQUtLRixLQUxMLENBS1dSLElBTFg7QUFNSDs7QUFDRCxTQUFTUCxjQUFULENBQXdCSyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1RxQixjQURMLENBQ29CSyxHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFEL0IsRUFFS0MsSUFGTCxDQUVXQyxPQUFELElBQWE7QUFDZixRQUNJQSxPQUFPLENBQUNKLFFBQVIsS0FBcUJKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQyxFQUE5QixJQUNBTixHQUFHLENBQUNLLElBQUosQ0FBU1MsSUFBVCxLQUFrQnJDLElBQUksQ0FBQ2UsS0FGM0IsRUFHRTtBQUNFLGFBQU9TLEdBQUcsQ0FBQ2MsTUFBSixDQUFXLEdBQVgsRUFBZ0JOLElBQWhCLENBQXFCO0FBQUVPLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQXJCLENBQVA7QUFDSDs7QUFFRGYsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQ7QUFDSCxHQVhMLEVBWUtFLEtBWkwsQ0FZV1IsSUFaWDtBQWFIOztBQUVELFNBQVNaLE1BQVQsQ0FBZ0JVLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUI7QUFDQTVCLEVBQUFBLGNBQWMsQ0FDVDJDLGFBREwsQ0FDbUI7QUFBRVgsSUFBQUEsRUFBRSxFQUFFTixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBakI7QUFBcUJGLElBQUFBLFFBQVEsRUFBRUosR0FBRyxDQUFDSyxJQUFKLENBQVNDO0FBQXhDLEdBRG5CLEVBQ2lFTixHQUFHLENBQUNHLElBRHJFLEVBRUtJLElBRkwsQ0FFV0MsT0FBRCxJQUFhUCxHQUFHLENBQUNRLElBQUosQ0FBU0QsT0FBVCxDQUZ2QixFQUdLRSxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxjQUFULENBQXdCRyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1Q0QyxPQURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1104, "endOffset": 1134, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1315, "endOffset": 1384, "count": 2 }, { "startOffset": 1340, "endOffset": 1362, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1526, "endOffset": 1589, "count": 2 }, { "startOffset": 1547, "endOffset": 1567, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1858, "endOffset": 1921, "count": 1 }, { "startOffset": 1879, "endOffset": 1899, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2180, "endOffset": 2235, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 3 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 2 }, { "startOffset": 416, "endOffset": 436, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 3 }, { "startOffset": 534, "endOffset": 593, "count": 1 }, { "startOffset": 593, "endOffset": 625, "count": 0 }, { "startOffset": 626, "endOffset": 706, "count": 0 }, { "startOffset": 708, "endOffset": 766, "count": 0 }, { "startOffset": 766, "endOffset": 882, "count": 1 }, { "startOffset": 882, "endOffset": 883, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 4 }, { "startOffset": 1092, "endOffset": 1144, "count": 2 }, { "startOffset": 1144, "endOffset": 1166, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 4 }, { "startOffset": 1257, "endOffset": 1276, "count": 2 }, { "startOffset": 1276, "endOffset": 1277, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 2 }, { "startOffset": 1370, "endOffset": 1371, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 6 }, { "startOffset": 1543, "endOffset": 1562, "count": 3 }, { "startOffset": 1562, "endOffset": 1563, "count": 0 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 3 } ], "isBlockCoverage": true }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 41 } ], "isBlockCoverage": true }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 8, "numPassingTests": 2, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827170801, "runtime": 1937, "slow": false, "start": 1610827168864 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.test.js", "testResults": [ { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu" ], "duration": 156, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu Should fail to create a menu with missing field", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "Should fail to create a menu with missing field" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu" ], "duration": 128, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu Should create a menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "Should create a menu" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/menu" ], "duration": 172, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/menu Should fail to create a menu for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "Should fail to create a menu for another company" }, { "ancestorTitles": [ "GET /api/v1/company/:company_id/menu" ], "duration": 20, "failureDetails": [], "failureMessages": [], "fullName": "GET /api/v1/company/:company_id/menu Should return company menu", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "Should return company menu" }, { "ancestorTitles": [ "GET api/v1/company/:company_id/menu/:id" ], "duration": 19, "failureDetails": [], "failureMessages": [], "fullName": "GET api/v1/company/:company_id/menu/:id should fail to find a menu", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to find a menu" }, { "ancestorTitles": [ "GET api/v1/company/:company_id/menu/:id" ], "duration": 25, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 404 \"Not Found\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 404 \"Not Found\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "GET api/v1/company/:company_id/menu/:id should find a menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should find a menu" }, { "ancestorTitles": [ "PATCH api/v1/company/:company_id/menu/:id" ], "duration": 151, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "PATCH api/v1/company/:company_id/menu/:id should fail to update menu for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to update menu for another company" }, { "ancestorTitles": [ "PATCH api/v1/company/:company_id/menu/:id" ], "duration": 138, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "PATCH api/v1/company/:company_id/menu/:id should update menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should update menu" }, { "ancestorTitles": [ "DELETE api/v1/company/:company_id/menu/:id" ], "duration": 141, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "DELETE api/v1/company/:company_id/menu/:id should fail to delete another comapanys menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to delete another comapanys menu" }, { "ancestorTitles": [ "DELETE api/v1/company/:company_id/menu/:id" ], "duration": 123, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "DELETE api/v1/company/:company_id/menu/:id should delete menu", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should delete menu" } ], "failureMessage": "\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu › Should fail to create a menu with missing field\u001b[39m\u001b[22m\n\n expected 500 \"Internal Server Error\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu › Should create a menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/menu › Should fail to create a menu for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 200 \"OK\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGET api/v1/company/:company_id/menu/:id › should find a menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 404 \"Not Found\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPATCH api/v1/company/:company_id/menu/:id › should fail to update menu for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 200 \"OK\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPATCH api/v1/company/:company_id/menu/:id › should update menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDELETE api/v1/company/:company_id/menu/:id › should fail to delete another comapanys menu\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 200 \"OK\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mDELETE api/v1/company/:company_id/menu/:id › should delete menu\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n", "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1058, "endOffset": 1141, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 9 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 28 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 42 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 173, "endOffset": 372, "count": 7 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 273, "endOffset": 366, "count": 7 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 14 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 14 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 3 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 21 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFF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QURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1081, "endOffset": 1103, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1281, "endOffset": 1394, "count": 1 }, { "startOffset": 1329, "endOffset": 1349, "count": 0 }, { "startOffset": 1368, "endOffset": 1389, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1524, "endOffset": 1575, "count": 2 }, { "startOffset": 1537, "endOffset": 1553, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1785, "endOffset": 1836, "count": 1 }, { "startOffset": 1815, "endOffset": 1836, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 2096, "endOffset": 2139, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 3 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 2 }, { "startOffset": 441, "endOffset": 456, "count": 1 }, { "startOffset": 456, "endOffset": 457, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 2 }, { "startOffset": 580, "endOffset": 602, "count": 1 }, { "startOffset": 602, "endOffset": 603, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 2 }, { "startOffset": 824, "endOffset": 866, "count": 1 }, { "startOffset": 866, "endOffset": 867, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 844, "endOffset": 864, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 4 }, { "startOffset": 946, "endOffset": 983, "count": 2 }, { "startOffset": 983, "endOffset": 1014, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 2 }, { "startOffset": 1113, "endOffset": 1114, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 4 }, { "startOffset": 1378, "endOffset": 1393, "count": 2 }, { "startOffset": 1393, "endOffset": 1394, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 4 } ], "isBlockCoverage": true }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 41 } ], "isBlockCoverage": true }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 2, "numPassingTests": 0, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827172094, "runtime": 1122, "slow": false, "start": 1610827170972 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.test.js", "testResults": [ { "ancestorTitles": [ "GET /api/v1/company/:company_id/accounts" ], "duration": 178, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"", "passed": false, "stack": "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 401 \"Unauthorized\", got 200 \"OK\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "GET /api/v1/company/:company_id/accounts should fail to fetch company accounts for another company", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fail to fetch company accounts for another company" }, { "ancestorTitles": [ "GET /api/v1/company/:company_id/accounts" ], "duration": 134, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 401 \"Unauthorized\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "GET /api/v1/company/:company_id/accounts should fetch company accounts", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should fetch company accounts" } ], "failureMessage": "\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGET /api/v1/company/:company_id/accounts › should fail to fetch company accounts for another company\u001b[39m\u001b[22m\n\n expected 401 \"Unauthorized\", got 200 \"OK\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n\n\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mGET /api/v1/company/:company_id/accounts › should fetch company accounts\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 401 \"Unauthorized\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n", "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1058, "endOffset": 1141, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 8 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 4 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 4 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 12 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 173, "endOffset": 372, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 273, "endOffset": 366, "count": 2 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 4 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 4 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 6 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFFQSxNQUFNUSxPQUFPLEdBQUdSLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qjs7QUFDQSxNQUFNUyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFDQSxNQUFNVSxLQUFLLEdBQUdWLE9BQU8sQ0FBQyxzQkFBRCxDQUFyQjs7QUFFQSxNQUFNVyxNQUFNLEdBQUdaLE9BQU8sQ0FBQ2EsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWYsQyxDQUlBOztBQUNBRixNQUFNLENBQUNHLEdBQVAsQ0FBVyx1QkFBWCxFQUFvQ04sT0FBcEM7QUFDQUcsTUFBTSxDQUFDRyxHQUFQLENBQVcsbUJBQVgsRUFBZ0NMLElBQWhDO0FBQ0FFLE1BQU0sQ0FBQ0csR0FBUCxDQUFXLG9CQUFYLEVBQWlDSixLQUFqQztBQUVBQyxNQUFNLENBQUNJLElBQVAsQ0FBWSxHQUFaLEVBQWlCVixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDVSxLQUFOLENBQUQsQ0FBckIsRUFBcUNmLFlBQXJDLEVBQW1EZ0IsTUFBbkQ7QUFDQU4sTUFBTSxDQUFDTyxLQUFQLENBQWEsTUFBYixFQUFxQmIsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXpCLEVBQXlDZCxZQUF6QyxFQUF1RGlCLE1BQXZEO0FBQ0FSLE1BQU0sQ0FBQ1MsR0FBUCxDQUFXLEdBQVgsRUFBZ0JmLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sQ0FBRCxDQUFwQixFQUFvQ0MsZUFBcEM7QUFDQVgsTUFBTSxDQUFDUyxHQUFQLENBQVcsT0FBWCxFQUFvQmYsSUFBSSxDQUFDLENBQUNDLElBQUksQ0FBQ1UsS0FBTixDQUFELENBQXhCLEVBQXdDTyxjQUF4QztBQUNBWixNQUFNLENBQUNTLEdBQVAsQ0FBVyxNQUFYLEVBQW1CZixJQUFJLENBQUMsQ0FBQ0MsSUFBSSxDQUFDZSxLQUFOLEVBQWFmLElBQUksQ0FBQ1UsS0FBbEIsQ0FBRCxDQUF2QixFQUFtRFEsY0FBbkQ7QUFDQWIsTUFBTSxDQUFDYyxNQUFQLENBQWMsTUFBZCxFQUFzQnBCLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUNlLEtBQU4sRUFBYWYsSUFBSSxDQUFDVSxLQUFsQixDQUFELENBQTFCLEVBQXNEVSxjQUF0RDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJqQixNQUFqQjs7QUFFQSxTQUFTTSxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEJDLElBQTFCLEVBQWdDO0FBQzVCRixFQUFBQSxHQUFHLENBQUNHLElBQUosQ0FBU0MsUUFBVCxHQUFvQkosR0FBRyxDQUFDSyxJQUFKLENBQVNDLEVBQTdCO0FBQ0FoQyxFQUFBQSxjQUFjLENBQ1RjLE1BREwsQ0FDWVksR0FBRyxDQUFDRyxJQURoQixFQUVLSSxJQUZMLENBRVdDLE9BQUQsSUFBYVAsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQsQ0FGdkIsRUFHS0UsS0FITCxDQUdXUixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsZUFBVCxDQUF5Qk8sR0FBekIsRUFBOEJDLEdBQTlCLEVBQW1DQyxJQUFuQyxFQUF5QztBQUNyQzVCLEVBQUFBLGNBQWMsQ0FDVG1CLGVBREwsR0FFS2MsSUFGTCxDQUVXSSxTQUFELElBQWU7QUFDakJWLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTL0IsV0FBVyxDQUFDc0IsR0FBRyxDQUFDSyxJQUFMLEVBQVdNLFNBQVgsQ0FBcEI7QUFDSCxHQUpMLEVBS0tELEtBTEwsQ0FLV1IsSUFMWDtBQU1IOztBQUNELFNBQVNSLGNBQVQsQ0FBd0JNLEdBQXhCLEVBQTZCQyxHQUE3QixFQUFrQ0MsSUFBbEMsRUFBd0M7QUFDcEM1QixFQUFBQSxjQUFjLENBQ1RvQixjQURMLENBQ29CTSxHQUFHLENBQUNLLElBQUosQ0FBU0MsRUFEN0IsRUFFS0MsSUFGTCxDQUVXSSxTQUFELElBQ0ZBLFNBQVMsR0FBR1YsR0FBRyxDQUFDUSxJQUFKLENBQVNFLFNBQVQsQ0FBSCxHQUF5QlYsR0FBRyxDQUFDVyxVQUFKLENBQWUsR0FBZixDQUgxQyxFQUtLRixLQUxMLENBS1dSLElBTFg7QUFNSDs7QUFDRCxTQUFTUCxjQUFULENBQXdCSyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1RxQixjQURMLENBQ29CSyxHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFEL0IsRUFFS0MsSUFGTCxDQUVXQyxPQUFELElBQWE7QUFDZixRQUNJQSxPQUFPLENBQUNKLFFBQVIsS0FBcUJKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQyxFQUE5QixJQUNBTixHQUFHLENBQUNLLElBQUosQ0FBU1MsSUFBVCxLQUFrQnJDLElBQUksQ0FBQ2UsS0FGM0IsRUFHRTtBQUNFLGFBQU9TLEdBQUcsQ0FBQ2MsTUFBSixDQUFXLEdBQVgsRUFBZ0JOLElBQWhCLENBQXFCO0FBQUVPLFFBQUFBLE9BQU8sRUFBRTtBQUFYLE9BQXJCLENBQVA7QUFDSDs7QUFFRGYsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNELE9BQVQ7QUFDSCxHQVhMLEVBWUtFLEtBWkwsQ0FZV1IsSUFaWDtBQWFIOztBQUVELFNBQVNaLE1BQVQsQ0FBZ0JVLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUI7QUFDQTVCLEVBQUFBLGNBQWMsQ0FDVDJDLGFBREwsQ0FDbUI7QUFBRVgsSUFBQUEsRUFBRSxFQUFFTixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBakI7QUFBcUJGLElBQUFBLFFBQVEsRUFBRUosR0FBRyxDQUFDSyxJQUFKLENBQVNDO0FBQXhDLEdBRG5CLEVBQ2lFTixHQUFHLENBQUNHLElBRHJFLEVBRUtJLElBRkwsQ0FFV0MsT0FBRCxJQUFhUCxHQUFHLENBQUNRLElBQUosQ0FBU0QsT0FBVCxDQUZ2QixFQUdLRSxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxjQUFULENBQXdCRyxHQUF4QixFQUE2QkMsR0FBN0IsRUFBa0NDLElBQWxDLEVBQXdDO0FBQ3BDO0FBQ0E1QixFQUFBQSxjQUFjLENBQ1Q0QyxPQURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 2 }, { "startOffset": 754, "endOffset": 775, "count": 1 }, { "startOffset": 775, "endOffset": 812, "count": 0 }, { "startOffset": 812, "endOffset": 842, "count": 1 }, { "startOffset": 842, "endOffset": 878, "count": 0 }, { "startOffset": 878, "endOffset": 879, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 3 } ], "isBlockCoverage": true }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 1, "numPassingTests": 1, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827173278, "runtime": 1010, "slow": false, "start": 1610827172268 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.test.js", "testResults": [ { "ancestorTitles": [ "POST /api/v1/company/:company_id/order" ], "duration": 28, "failureDetails": [], "failureMessages": [], "fullName": "POST /api/v1/company/:company_id/order should fail to creat an order if cart_id is missing", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "should fail to creat an order if cart_id is missing" }, { "ancestorTitles": [ "POST /api/v1/company/:company_id/order" ], "duration": 143, "failureDetails": [ { "actual": "", "error": {}, "expected": "", "matcherName": "", "message": "Error: expected 200 \"OK\", got 500 \"Internal Server Error\"", "passed": false, "stack": "Error: expected 200 \"OK\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" } ], "failureMessages": [ "Error: expected 200 \"OK\", got 500 \"Internal Server Error\"\n at Test.Object.<anonymous>.Test._assertStatus (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:270:12)\n at Test.Object.<anonymous>.Test._assertFunction (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:285:11)\n at Test.Object.<anonymous>.Test.assert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:175:21)\n at Server.localAssert (/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/supertest/lib/test.js:133:12)\n at Object.onceWrapper (events.js:291:20)\n at Server.emit (events.js:203:13)\n at emitCloseNT (net.js:1572:8)\n at processTicksAndRejections (internal/process/task_queues.js:77:11)" ], "fullName": "POST /api/v1/company/:company_id/order should create a cart and add item to it", "location": null, "numPassingAsserts": 0, "status": "failed", "title": "should create a cart and add item to it" } ], "failureMessage": "\u001b[1m\u001b[31m \u001b[1m● \u001b[22m\u001b[1mPOST /api/v1/company/:company_id/order › should create a cart and add item to it\u001b[39m\u001b[22m\n\n expected 200 \"OK\", got 500 \"Internal Server Error\"\n\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertStatus (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:270:12)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test._assertFunction (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:285:11)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Test.Object.<anonymous>.Test.assert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:175:21)\u001b[22m\u001b[2m\u001b[22m\n\u001b[2m \u001b[2mat Server.localAssert (\u001b[22m\u001b[2m\u001b[0m\u001b[36mnode_modules/supertest/lib/test.js\u001b[39m\u001b[0m\u001b[2m:133:12)\u001b[22m\u001b[2m\u001b[22m\n", "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 2 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 2 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 492, "endOffset": 506, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFF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QURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "", "ranges": [ { "startOffset": 1253, "endOffset": 1341, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 2 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 2 }, { "startOffset": 361, "endOffset": 573, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 3 }, { "startOffset": 2130, "endOffset": 2143, "count": 0 }, { "startOffset": 2157, "endOffset": 2355, "count": 1 }, { "startOffset": 2297, "endOffset": 2310, "count": 0 }, { "startOffset": 2351, "endOffset": 2355, "count": 0 }, { "startOffset": 2355, "endOffset": 2373, "count": 0 } ], "isBlockCoverage": true }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 7 } ], "isBlockCoverage": true }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nconst db = require(\"../../../../db\");\n\nclass OrderItem extends Model {\n static get tableName() {\n return tableNames.orderItem;\n }\n\n static get relationMappings() {\n const Order = require(\"../order.model\");\n\n return {\n order: {\n relation: Model.BelongsToOneRelation,\n modelClass: Order,\n join: {\n from: `${tableNames.orderItem}.order_id`,\n to: `${tableNames.order}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = OrderItem;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5tb2RlbC5qcyJdLCJuYW1lcyI6WyJNb2RlbCIsInJlcXVpcmUiLCJ0YWJsZU5hbWVzIiwiZGIiLCJPcmRlckl0ZW0iLCJ0YWJsZU5hbWUiLCJvcmRlckl0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiT3JkZXIiLCJvcmRlciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsU0FBTixTQUF3QkosS0FBeEIsQ0FBOEI7QUFDMUIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLFNBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsS0FBSyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBckI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURiO0FBRUhDLFFBQUFBLFVBQVUsRUFBRUosS0FGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksU0FBVSxXQUQ1QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxLQUFNO0FBRnRCO0FBSEg7QUFESixLQUFQO0FBVUg7O0FBbEJ5Qjs7QUFxQjlCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxTQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIE9yZGVySXRlbSBleHRlbmRzIE1vZGVsIHtcbiAgICBzdGF0aWMgZ2V0IHRhYmxlTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRhYmxlTmFtZXMub3JkZXJJdGVtO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgY29uc3QgT3JkZXIgPSByZXF1aXJlKFwiLi4vb3JkZXIubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG9yZGVyOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5vcmRlckl0ZW19Lm9yZGVyX2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9yZGVySXRlbTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../constants/tableNames\");\nconst db = require(\"../../../../db\");\n\nclass OrderItem extends Model {\n static get tableName() {\n return tableNames.orderItem;\n }\n\n static get relationMappings() {\n const Order = require(\"../order.model\");\n\n return {\n order: {\n relation: Model.BelongsToOneRelation,\n modelClass: Order,\n join: {\n from: `${tableNames.orderItem}.order_id`,\n to: `${tableNames.order}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = OrderItem;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/orderItemmodel_10e63b1a8412bd6178b37fc6f3f982c9.map", "wrapperLength": 89 }, "result": { "scriptId": "28", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2971, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2968, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "OrderItem", "ranges": [ { "startOffset": 236, "endOffset": 236, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 277, "endOffset": 331, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 342, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 2, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827174422, "runtime": 863, "slow": false, "start": 1610827173559 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/test/api.test.js", "testResults": [ { "ancestorTitles": [ "GET /api/v1" ], "duration": 22, "failureDetails": [], "failureMessages": [], "fullName": "GET /api/v1 responds with a json message", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "responds with a json message" }, { "ancestorTitles": [ "GET /api/v1/emojis" ], "duration": 26, "failureDetails": [], "failureMessages": [], "fullName": "GET /api/v1/emojis responds with a json message", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "responds with a json message" } ], "failureMessage": null, "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 1 } ], "isBlockCoverage": true }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFF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QURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] }, { "leaks": false, "numFailingTests": 0, "numPassingTests": 2, "numPendingTests": 0, "numTodoTests": 0, "openHandles": [], "perfStats": { "end": 1610827175506, "runtime": 898, "slow": false, "start": 1610827174608 }, "skipped": false, "snapshot": { "added": 0, "fileDeleted": false, "matched": 0, "unchecked": 0, "unmatched": 0, "updated": 0, "uncheckedKeys": [] }, "testFilePath": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/test/app.test.js", "testResults": [ { "ancestorTitles": [ "app" ], "duration": 34, "failureDetails": [], "failureMessages": [], "fullName": "app responds with a not found message", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "responds with a not found message" }, { "ancestorTitles": [ "GET /" ], "duration": 15, "failureDetails": [], "failureMessages": [], "fullName": "GET / responds with a json message", "location": null, "numPassingAsserts": 0, "status": "passed", "title": "responds with a json message" } ], "failureMessage": null, "v8Coverage": [ { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst morgan = require(\"morgan\");\n\nconst compression = require(\"compression\");\n\nconst helmet = require(\"helmet\");\n\nconst cors = require(\"cors\"); // Swagger stuff\n\n\nrequire(\"rootpath\")();\n\nconst swaggerUi = require(\"swagger-ui-express\");\n\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\n\nconst api = require(\"./api\");\n\nconst app = express();\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\"\n });\n});\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\nmodule.exports = app;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcC5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsIm1vcmdhbiIsImNvbXByZXNzaW9uIiwiaGVsbWV0IiwiY29ycyIsInN3YWdnZXJVaSIsInN3YWdnZXJEb2MiLCJjb25maWciLCJtaWRkbGV3YXJlcyIsImFwaSIsImFwcCIsInVzZSIsImpzb24iLCJnZXQiLCJyZXEiLCJyZXMiLCJtZXNzYWdlIiwic2VydmUiLCJzZXR1cCIsIm5vdEZvdW5kIiwiZXJyb3JIYW5kbGVyIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1FLFdBQVcsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBM0I7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMsUUFBRCxDQUF0Qjs7QUFDQSxNQUFNSSxJQUFJLEdBQUdKLE9BQU8sQ0FBQyxNQUFELENBQXBCLEMsQ0FFQTs7O0FBQ0FBLE9BQU8sQ0FBQyxVQUFELENBQVA7O0FBQ0EsTUFBTUssU0FBUyxHQUFHTCxPQUFPLENBQUMsb0JBQUQsQ0FBekI7O0FBQ0EsTUFBTU0sVUFBVSxHQUFHTixPQUFPLENBQUMsc0JBQUQsQ0FBMUI7O0FBRUFBLE9BQU8sQ0FBQyxRQUFELENBQVAsQ0FBa0JPLE1BQWxCOztBQUVBLE1BQU1DLFdBQVcsR0FBR1IsT0FBTyxDQUFDLGVBQUQsQ0FBM0I7O0FBQ0EsTUFBTVMsR0FBRyxHQUFHVCxPQUFPLENBQUMsT0FBRCxDQUFuQjs7QUFFQSxNQUFNVSxHQUFHLEdBQUdYLE9BQU8sRUFBbkI7QUFFQVcsR0FBRyxDQUFDQyxHQUFKLENBQVFWLE1BQU0sQ0FBQyxLQUFELENBQWQ7QUFDQVMsR0FBRyxDQUFDQyxHQUFKLENBQVFSLE1BQU0sRUFBZDtBQUNBTyxHQUFHLENBQUNDLEdBQUosQ0FBUVAsSUFBSSxFQUFaO0FBQ0FNLEdBQUcsQ0FBQ0MsR0FBSixDQUFRVCxXQUFXLEVBQW5CO0FBQ0FRLEdBQUcsQ0FBQ0MsR0FBSixDQUFRWixPQUFPLENBQUNhLElBQVIsRUFBUjtBQUVBRixHQUFHLENBQUNHLEdBQUosQ0FBUSxHQUFSLEVBQWEsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEtBQWM7QUFDdkJBLEVBQUFBLEdBQUcsQ0FBQ0gsSUFBSixDQUFTO0FBQ0xJLElBQUFBLE9BQU8sRUFBRTtBQURKLEdBQVQ7QUFHSCxDQUpEO0FBTUFOLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFNBQVIsRUFBbUJGLEdBQW5CO0FBQ0FDLEdBQUcsQ0FBQ0MsR0FBSixDQUFRLFdBQVIsRUFBcUJOLFNBQVMsQ0FBQ1ksS0FBL0IsRUFBc0NaLFNBQVMsQ0FBQ2EsS0FBVixDQUFnQlosVUFBaEIsQ0FBdEM7QUFFQUksR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1csUUFBcEI7QUFDQVQsR0FBRyxDQUFDQyxHQUFKLENBQVFILFdBQVcsQ0FBQ1ksWUFBcEI7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCWixHQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IG1vcmdhbiA9IHJlcXVpcmUoXCJtb3JnYW5cIik7XG5jb25zdCBjb21wcmVzc2lvbiA9IHJlcXVpcmUoXCJjb21wcmVzc2lvblwiKTtcbmNvbnN0IGhlbG1ldCA9IHJlcXVpcmUoXCJoZWxtZXRcIik7XG5jb25zdCBjb3JzID0gcmVxdWlyZShcImNvcnNcIik7XG5cbi8vIFN3YWdnZXIgc3R1ZmZcbnJlcXVpcmUoXCJyb290cGF0aFwiKSgpO1xuY29uc3Qgc3dhZ2dlclVpID0gcmVxdWlyZShcInN3YWdnZXItdWktZXhwcmVzc1wiKTtcbmNvbnN0IHN3YWdnZXJEb2MgPSByZXF1aXJlKFwiLi4vZG9jcy9zd2FnZ2VyLmpzb25cIik7XG5cbnJlcXVpcmUoXCJkb3RlbnZcIikuY29uZmlnKCk7XG5cbmNvbnN0IG1pZGRsZXdhcmVzID0gcmVxdWlyZShcIi4vbWlkZGxld2FyZXNcIik7XG5jb25zdCBhcGkgPSByZXF1aXJlKFwiLi9hcGlcIik7XG5cbmNvbnN0IGFwcCA9IGV4cHJlc3MoKTtcblxuYXBwLnVzZShtb3JnYW4oXCJkZXZcIikpO1xuYXBwLnVzZShoZWxtZXQoKSk7XG5hcHAudXNlKGNvcnMoKSk7XG5hcHAudXNlKGNvbXByZXNzaW9uKCkpO1xuYXBwLnVzZShleHByZXNzLmpzb24oKSk7XG5cbmFwcC5nZXQoXCIvXCIsIChyZXEsIHJlcykgPT4ge1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogXCLwn6aE8J+MiOKcqPCfkYvwn4yO8J+MjfCfjI/inKjwn4yI8J+mhFwiLFxuICAgIH0pO1xufSk7XG5cbmFwcC51c2UoXCIvYXBpL3YxXCIsIGFwaSk7XG5hcHAudXNlKFwiL2FwaS1kb2NzXCIsIHN3YWdnZXJVaS5zZXJ2ZSwgc3dhZ2dlclVpLnNldHVwKHN3YWdnZXJEb2MpKTtcblxuYXBwLnVzZShtaWRkbGV3YXJlcy5ub3RGb3VuZCk7XG5hcHAudXNlKG1pZGRsZXdhcmVzLmVycm9ySGFuZGxlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwO1xuIl19", "originalCode": "const express = require(\"express\");\nconst morgan = require(\"morgan\");\nconst compression = require(\"compression\");\nconst helmet = require(\"helmet\");\nconst cors = require(\"cors\");\n\n// Swagger stuff\nrequire(\"rootpath\")();\nconst swaggerUi = require(\"swagger-ui-express\");\nconst swaggerDoc = require(\"../docs/swagger.json\");\n\nrequire(\"dotenv\").config();\n\nconst middlewares = require(\"./middlewares\");\nconst api = require(\"./api\");\n\nconst app = express();\n\napp.use(morgan(\"dev\"));\napp.use(helmet());\napp.use(cors());\napp.use(compression());\napp.use(express.json());\n\napp.get(\"/\", (req, res) => {\n res.json({\n message: \"🦄🌈✨👋🌎🌍🌏✨🌈🦄\",\n });\n});\n\napp.use(\"/api/v1\", api);\napp.use(\"/api-docs\", swaggerUi.serve, swaggerUi.setup(swaggerDoc));\n\napp.use(middlewares.notFound);\napp.use(middlewares.errorHandler);\n\nmodule.exports = app;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/68/app_6855482f668a469a3eba3734dab1ce4c.map", "wrapperLength": 89 }, "result": { "scriptId": "2128", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4132, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4129, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 669, "endOffset": 739, "count": 1 } ], "isBlockCoverage": true } ] } }, { "codeTransformResult": { "code": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n/* eslint-disable no-unused-vars */\n\n\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode); // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1pZGRsZXdhcmVzLmpzIl0sIm5hbWVzIjpbIm5vdEZvdW5kIiwicmVxIiwicmVzIiwibmV4dCIsInN0YXR1cyIsImVycm9yIiwiRXJyb3IiLCJvcmlnaW5hbFVybCIsImVycm9ySGFuZGxlciIsImVyciIsInN0YXR1c0NvZGUiLCJjb25zb2xlIiwibG9nIiwianNvbiIsIm1lc3NhZ2UiLCJzdGFjayIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFFBQVQsQ0FBa0JDLEdBQWxCLEVBQXVCQyxHQUF2QixFQUE0QkMsSUFBNUIsRUFBa0M7QUFDOUJELEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXLEdBQVg7QUFDQSxRQUFNQyxLQUFLLEdBQUcsSUFBSUMsS0FBSixDQUFXLG9CQUFtQkwsR0FBRyxDQUFDTSxXQUFZLEVBQTlDLENBQWQ7QUFDQUosRUFBQUEsSUFBSSxDQUFDRSxLQUFELENBQUo7QUFDSDtBQUVEOzs7QUFDQSxTQUFTRyxZQUFULENBQXNCQyxHQUF0QixFQUEyQlIsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QztBQUNBLFFBQU1PLFVBQVUsR0FBR1IsR0FBRyxDQUFDUSxVQUFKLEtBQW1CLEdBQW5CLEdBQXlCUixHQUFHLENBQUNRLFVBQTdCLEdBQTBDLEdBQTdEO0FBQ0FSLEVBQUFBLEdBQUcsQ0FBQ0UsTUFBSixDQUFXTSxVQUFYLEVBSHVDLENBSXZDOztBQUNBQyxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWUgsR0FBWjtBQUNBUCxFQUFBQSxHQUFHLENBQUNXLElBQUosQ0FBUztBQUNMQyxJQUFBQSxPQUFPLEVBQUVMLEdBQUcsQ0FBQ0ssT0FBSixJQUFlTCxHQURuQjtBQUVMTSxJQUFBQSxLQUFLLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxRQUFaLEtBQXlCLFlBQXpCLEdBQXdDLElBQXhDLEdBQStDVCxHQUFHLENBQUNNO0FBRnJELEdBQVQ7QUFJSDs7QUFFREksTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JwQixFQUFBQSxRQURhO0FBRWJRLEVBQUFBO0FBRmEsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RGb3VuZChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihg8J+UjSAtIE5vdCBGb3VuZCAtICR7cmVxLm9yaWdpbmFsVXJsfWApO1xuICAgIG5leHQoZXJyb3IpO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuZnVuY3Rpb24gZXJyb3JIYW5kbGVyKGVyciwgcmVxLCByZXMsIG5leHQpIHtcbiAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVudXNlZC12YXJzICovXG4gICAgY29uc3Qgc3RhdHVzQ29kZSA9IHJlcy5zdGF0dXNDb2RlICE9PSAyMDAgPyByZXMuc3RhdHVzQ29kZSA6IDUwMDtcbiAgICByZXMuc3RhdHVzKHN0YXR1c0NvZGUpO1xuICAgIC8vIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIGNvbnNvbGUubG9nKGVyci5tZXNzYWdlKTtcbiAgICBjb25zb2xlLmxvZyhlcnIpO1xuICAgIHJlcy5qc29uKHtcbiAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UgfHwgZXJyLFxuICAgICAgICBzdGFjazogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwicHJvZHVjdGlvblwiID8gXCLwn6WeXCIgOiBlcnIuc3RhY2ssXG4gICAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIG5vdEZvdW5kLFxuICAgIGVycm9ySGFuZGxlcixcbn07XG4iXX0=", "originalCode": "function notFound(req, res, next) {\n res.status(404);\n const error = new Error(`🔍 - Not Found - ${req.originalUrl}`);\n next(error);\n}\n\n/* eslint-disable no-unused-vars */\nfunction errorHandler(err, req, res, next) {\n /* eslint-enable no-unused-vars */\n const statusCode = res.statusCode !== 200 ? res.statusCode : 500;\n res.status(statusCode);\n // if (process.env.NODE_ENV !== \"production\") console.log(err.message);\n console.log(err);\n res.json({\n message: err.message || err,\n stack: process.env.NODE_ENV === \"production\" ? \"🥞\" : err.stack,\n });\n}\n\nmodule.exports = {\n notFound,\n errorHandler,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b6/middlewares_b610b98000c0bfc3c0666a10bf79f6c8.map", "wrapperLength": 89 }, "result": { "scriptId": "2261", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3039, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3036, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "notFound", "ranges": [ { "startOffset": 89, "endOffset": 226, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "errorHandler", "ranges": [ { "startOffset": 265, "endOffset": 655, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\"\n });\n});\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwiZ2V0IiwicmVxIiwicmVzIiwianNvbiIsIm1lc3NhZ2UiLCJ1c2UiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUVBLE1BQU1DLE1BQU0sR0FBR0YsT0FBTyxDQUFDRyxNQUFSLEVBQWY7QUFFQUQsTUFBTSxDQUFDRSxHQUFQLENBQVcsR0FBWCxFQUFnQixDQUFDQyxHQUFELEVBQU1DLEdBQU4sS0FBYztBQUMxQkEsRUFBQUEsR0FBRyxDQUFDQyxJQUFKLENBQVM7QUFDTEMsSUFBQUEsT0FBTyxFQUFFO0FBREosR0FBVDtBQUdILENBSkQ7QUFNQU4sTUFBTSxDQUFDTyxHQUFQLENBQVcsV0FBWCxFQUF3QlIsT0FBTyxDQUFDLG9CQUFELENBQS9CO0FBQ0FDLE1BQU0sQ0FBQ08sR0FBUCxDQUFXLFVBQVgsRUFBdUJSLE9BQU8sQ0FBQywwQkFBRCxDQUE5QjtBQUVBUyxNQUFNLENBQUNDLE9BQVAsR0FBaUJULE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuXG5yb3V0ZXIuZ2V0KFwiL1wiLCAocmVxLCByZXMpID0+IHtcbiAgICByZXMuanNvbih7XG4gICAgICAgIG1lc3NhZ2U6IFwiQVBJIC0g8J+Ri/CfjI7wn4yN8J+Mj1wiLFxuICAgIH0pO1xufSk7XG5cbnJvdXRlci51c2UoXCIvYWNjb3VudHNcIiwgcmVxdWlyZShcIi4vYXV0aC9hdXRoLnJvdXRlc1wiKSk7XG5yb3V0ZXIudXNlKFwiL2NvbXBhbnlcIiwgcmVxdWlyZShcIi4vY29tcGFueS9jb21wYW55LnJvdXRlc1wiKSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\n\nconst router = express.Router();\n\nrouter.get(\"/\", (req, res) => {\n res.json({\n message: \"API - 👋🌎🌍🌏\",\n });\n});\n\nrouter.use(\"/accounts\", require(\"./auth/auth.routes\"));\nrouter.use(\"/company\", require(\"./company/company.routes\"));\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/46/index_46150bc44a91011b69db233a13fb0837.map", "wrapperLength": 89 }, "result": { "scriptId": "2262", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1667, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1664, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 175, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst router = express.Router();\n\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema\n} = require(\"./auth.validators\");\n\nconst authService = require(\"./auth.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const {\n email,\n password\n } = req.body;\n authService.login({\n email,\n password\n }).then(({\n user,\n token\n }) => {\n res.json({\n user,\n token\n });\n }).catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService.register(req.body, req.get(\"origin\")).then(({\n user,\n token\n }) => {\n return res.json({\n user,\n token,\n message: \"Registration successfull, please check your email for verification instructions\"\n });\n }).catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService.verifyEmail(req.body).then(() => res.json({\n message: \"Verification successfull\"\n })).catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService.getAll().then(accounts => res.json(accounts)).catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.getById(req.params.id).then(account => account ? res.json(account) : res.sendStatus(404)).catch(next);\n}\n\nfunction create(req, res, next) {\n authService.create(req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.update(req.params.id, req.body).then(account => res.json(account)).catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unathorized\"\n });\n }\n\n authService.delete(req.param.id).then(() => res.json({\n message: \"Account deleted successfully\",\n id: req.params.id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwicm91dGVyIiwiUm91dGVyIiwic2lnbmluU2NoZW1hIiwic2lnbnVwU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwidmVyaWZ5RW1haWxTY2hlbWEiLCJhdXRoU2VydmljZSIsImF1dGgiLCJBdXRoIiwiUm9sZSIsInBvc3QiLCJsb2dpbiIsInJlZ2lzdGVyQ3VzdG9tZXIiLCJyZWdpc3RlciIsInZlcmlmeUVtYWlsIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGwiLCJnZXRCeUlkIiwib3duZXIiLCJjcmVhdGUiLCJwdXQiLCJ1cGRhdGUiLCJkZWxldGUiLCJfZGVsZXRlIiwibW9kdWxlIiwiZXhwb3J0cyIsInJlcSIsInJlcyIsIm5leHQiLCJlbWFpbCIsInBhc3N3b3JkIiwiYm9keSIsInRoZW4iLCJ1c2VyIiwidG9rZW4iLCJqc29uIiwiY2F0Y2giLCJyb2xlIiwibWVzc2FnZSIsImN1c3RvbWVyIiwiYWNjb3VudHMiLCJOdW1iZXIiLCJwYXJhbXMiLCJpZCIsInN0YXR1cyIsImFjY291bnQiLCJzZW5kU3RhdHVzIiwicGFyYW0iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHRixPQUFPLENBQUNHLE1BQVIsRUFBZjs7QUFDQSxNQUFNO0FBQ0ZDLEVBQUFBLFlBREU7QUFFRkMsRUFBQUEsWUFGRTtBQUdGQyxFQUFBQSxZQUhFO0FBSUZDLEVBQUFBO0FBSkUsSUFLRk4sT0FBTyxDQUFDLG1CQUFELENBTFg7O0FBTUEsTUFBTU8sV0FBVyxHQUFHUCxPQUFPLENBQUMsZ0JBQUQsQ0FBM0I7O0FBQ0EsTUFBTTtBQUFFUSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJULE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNVSxJQUFJLEdBQUdWLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7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QTNCLEVBQWlDO0FBQzdCO0FBQ0EsTUFBSWEsTUFBTSxDQUFDZixHQUFHLENBQUNnQixNQUFKLENBQVdDLEVBQVosQ0FBTixLQUEwQmpCLEdBQUcsQ0FBQ08sSUFBSixDQUFTVSxFQUFuQyxJQUF5Q2pCLEdBQUcsQ0FBQ08sSUFBSixDQUFTSSxJQUFULEtBQWtCN0IsSUFBSSxDQUFDTyxLQUFwRSxFQUEyRTtBQUN2RSxXQUFPWSxHQUFHLENBQUNpQixNQUFKLENBQVcsR0FBWCxFQUFnQlQsSUFBaEIsQ0FBcUI7QUFBRUcsTUFBQUEsT0FBTyxFQUFFO0FBQVgsS0FBckIsQ0FBUDtBQUNIOztBQUVEakMsRUFBQUEsV0FBVyxDQUNOaUIsTUFETCxDQUNZSSxHQUFHLENBQUNxQixLQUFKLENBQVVKLEVBRHRCLEVBRUtYLElBRkwsQ0FFVSxNQUNGTCxHQUFHLENBQUNRLElBQUosQ0FBUztBQUNMRyxJQUFBQSxPQUFPLEVBQUUsOEJBREo7QUFFTEssSUFBQUEsRUFBRSxFQUFFakIsR0FBRyxDQUFDZ0IsTUFBSixDQUFXQztBQUZWLEdBQVQsQ0FIUixFQVFLUCxLQVJMLENBUVdSLElBUlg7QUFTSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG5jb25zdCB7XG4gICAgc2lnbmluU2NoZW1hLFxuICAgIHNpZ251cFNjaGVtYSxcbiAgICB1cGRhdGVTY2hlbWEsXG4gICAgdmVyaWZ5RW1haWxTY2hlbWEsXG59ID0gcmVxdWlyZShcIi4vYXV0aC52YWxpZGF0b3JzXCIpO1xuY29uc3QgYXV0aFNlcnZpY2UgPSByZXF1aXJlKFwiLi9hdXRoLnNlcnZpY2VcIik7XG5jb25zdCB7IGF1dGg6IEF1dGggfSA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcm9sZVwiKTtcblxucm91dGVyLnBvc3QoXCIvbG9naW5cIiwgc2lnbmluU2NoZW1hLCBsb2dpbik7XG5yb3V0ZXIucG9zdChcIi9yZWdpc3Rlci1jdXN0b21lclwiLCBzaWdudXBTY2hlbWEsIHJlZ2lzdGVyQ3VzdG9tZXIpO1xucm91dGVyLnBvc3QoXCIvcmVnaXN0ZXItb3duZXJcIiwgc2lnbnVwU2NoZW1hLCByZWdpc3Rlcik7XG5yb3V0ZXIucG9zdChcIi92ZXJpZnktZW1haWxcIiwgdmVyaWZ5RW1haWxTY2hlbWEsIHZlcmlmeUVtYWlsKTtcbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoUm9sZS5hZG1pbiksIGdldEFsbCk7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldEJ5SWQpO1xucm91dGVyLnBvc3QoXCIvY3JlYXRlLXN0YWZmXCIsIEF1dGgoUm9sZS5vd25lciksIHNpZ251cFNjaGVtYSwgY3JlYXRlKTtcbnJvdXRlci5wdXQoXCIvOmlkXCIsIEF1dGgoKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aCgpLCBfZGVsZXRlKTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGxvZ2luKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgeyBlbWFpbCwgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5sb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IHVzZXIsIHRva2VuIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHJlZ2lzdGVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUub3duZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiByZWdpc3RlckN1c3RvbWVyKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkucm9sZSA9IFJvbGUuY3VzdG9tZXI7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLnJlZ2lzdGVyKHJlcS5ib2R5LCByZXEuZ2V0KFwib3JpZ2luXCIpKVxuICAgICAgICAudGhlbigoeyB1c2VyLCB0b2tlbiB9KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIHVzZXIsXG4gICAgICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgICAgICAgXCJSZWdpc3RyYXRpb24gc3VjY2Vzc2Z1bGwsIHBsZWFzZSBjaGVjayB5b3VyIGVtYWlsIGZvciB2ZXJpZmljYXRpb24gaW5zdHJ1Y3Rpb25zXCIsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlFbWFpbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC52ZXJpZnlFbWFpbChyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKCkgPT4gcmVzLmpzb24oeyBtZXNzYWdlOiBcIlZlcmlmaWNhdGlvbiBzdWNjZXNzZnVsbFwiIH0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbChyZXEsIHJlcywgbmV4dCkge1xuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGwoKVxuICAgICAgICAudGhlbigoYWNjb3VudHMpID0+IHJlcy5qc29uKGFjY291bnRzKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gdXNlcnMgY2FuIGdldCB0aGVpciBvd24gYWNjb3VudCBhbmQgYWRtaW4gY2FuIGdldCBhbnkgYWNjb3VudFxuICAgIGlmIChOdW1iZXIocmVxLnBhcmFtcy5pZCkgIT09IHJlcS51c2VyLmlkICYmIHJlcS51c2VyLnJvbGUgIT09IFJvbGUuYWRtaW4pIHtcbiAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF0aG9yaXplZFwiIH0pO1xuICAgIH1cblxuICAgIGF1dGhTZXJ2aWNlXG4gICAgICAgIC5nZXRCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChhY2NvdW50KSA9PiAoYWNjb3VudCA/IHJlcy5qc29uKGFjY291bnQpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgYXV0aFNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGFjY291bnQpID0+IHJlcy5qc29uKGFjY291bnQpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiB1cGRhdGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAudXBkYXRlKHJlcS5wYXJhbXMuaWQsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigoYWNjb3VudCkgPT4gcmVzLmpzb24oYWNjb3VudCkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIHVzZXJzIGNhbiBkZWxldGUgdGhlaXIgYWNjb3VudHMgYW5kIGFkbWluIGNhbiB1cGRhdGUgYW55IGFjY291bnRcbiAgICBpZiAoTnVtYmVyKHJlcS5wYXJhbXMuaWQpICE9PSByZXEudXNlci5pZCAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdGhvcml6ZWRcIiB9KTtcbiAgICB9XG5cbiAgICBhdXRoU2VydmljZVxuICAgICAgICAuZGVsZXRlKHJlcS5wYXJhbS5pZClcbiAgICAgICAgLnRoZW4oKCkgPT5cbiAgICAgICAgICAgIHJlcy5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkFjY291bnQgZGVsZXRlZCBzdWNjZXNzZnVsbHlcIixcbiAgICAgICAgICAgICAgICBpZDogcmVxLnBhcmFtcy5pZCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst router = express.Router();\nconst {\n signinSchema,\n signupSchema,\n updateSchema,\n verifyEmailSchema,\n} = require(\"./auth.validators\");\nconst authService = require(\"./auth.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\n\nrouter.post(\"/login\", signinSchema, login);\nrouter.post(\"/register-customer\", signupSchema, registerCustomer);\nrouter.post(\"/register-owner\", signupSchema, register);\nrouter.post(\"/verify-email\", verifyEmailSchema, verifyEmail);\nrouter.get(\"/\", Auth(Role.admin), getAll);\nrouter.get(\"/:id\", Auth(), getById);\nrouter.post(\"/create-staff\", Auth(Role.owner), signupSchema, create);\nrouter.put(\"/:id\", Auth(), updateSchema, update);\nrouter.delete(\"/:id\", Auth(), _delete);\n\nmodule.exports = router;\n\nfunction login(req, res, next) {\n const { email, password } = req.body;\n authService\n .login({ email, password })\n .then(({ user, token }) => {\n res.json({ user, token });\n })\n .catch(next);\n}\n\nfunction register(req, res, next) {\n req.body.role = Role.owner;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction registerCustomer(req, res, next) {\n req.body.role = Role.customer;\n authService\n .register(req.body, req.get(\"origin\"))\n .then(({ user, token }) => {\n return res.json({\n user,\n token,\n message:\n \"Registration successfull, please check your email for verification instructions\",\n });\n })\n .catch(next);\n}\n\nfunction verifyEmail(req, res, next) {\n authService\n .verifyEmail(req.body)\n .then(() => res.json({ message: \"Verification successfull\" }))\n .catch(next);\n}\n\nfunction getAll(req, res, next) {\n authService\n .getAll()\n .then((accounts) => res.json(accounts))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n // users can get their own account and admin can get any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .getById(req.params.id)\n .then((account) => (account ? res.json(account) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction create(req, res, next) {\n authService\n .create(req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // users can update their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .update(req.params.id, req.body)\n .then((account) => res.json(account))\n .catch(next);\n}\n\nfunction _delete(req, res, next) {\n // users can delete their accounts and admin can update any account\n if (Number(req.params.id) !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({ message: \"Unathorized\" });\n }\n\n authService\n .delete(req.param.id)\n .then(() =>\n res.json({\n message: \"Account deleted successfully\",\n id: req.params.id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/75/authroutes_75bf7888c8e4ac0a10e44194cc103f96.map", "wrapperLength": 89 }, "result": { "scriptId": "2263", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 15260, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 15257, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 919, "endOffset": 1157, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 1159, "endOffset": 1486, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "registerCustomer", "ranges": [ { "startOffset": 1488, "endOffset": 1826, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1828, "endOffset": 1985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 1987, "endOffset": 2095, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2097, "endOffset": 2472, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 2474, "endOffset": 2588, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2590, "endOffset": 2944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2946, "endOffset": 3350, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\")\n }; // TODO figure out how admin can update role\n\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGgudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsInNpZ251cFNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJmaXJzdE5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImxhc3ROYW1lIiwicGhvbmVOdW1iZXIiLCJtaW4iLCJtYXgiLCJlbWFpbCIsInBhc3N3b3JkIiwiY29uZmlybVBhc3N3b3JkIiwidmFsaWQiLCJyZWYiLCJzaWduaW5TY2hlbWEiLCJ1cGRhdGVTY2hlbWEiLCJzY2hlbWFSdWxlcyIsImVtcHR5Iiwicm9sZSIsIndpdGgiLCJ2ZXJpZnlFbWFpbFNjaGVtYSIsInRva2VuIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxLQUFELENBQW5COztBQUNBLE1BQU1DLGVBQWUsR0FBR0QsT0FBTyxDQUFDLG9DQUFELENBQS9COztBQUVBRSxPQUFPLENBQUNDLFlBQVIsR0FBdUIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsU0FBUyxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURXO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLFdBQVcsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFJLEdBQWIsQ0FBaUIsRUFBakIsRUFBcUJDLEdBQXJCLENBQXlCLEVBQXpCLEVBQTZCSixRQUE3QixFQUhTO0FBSXRCO0FBQ0FLLElBQUFBLEtBQUssRUFBRWpCLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLEdBQXFCTCxRQUFyQixFQUxlO0FBTXRCTSxJQUFBQSxRQUFRLEVBQUVsQixHQUFH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bnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLnNpZ251cFNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBmaXJzdE5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLnJlcXVpcmVkKCksXG4gICAgICAgIC8vIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkucmVxdWlyZWQoKSxcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgICAgIGNvbmZpcm1QYXNzd29yZDogSm9pLnN0cmluZygpLnZhbGlkKEpvaS5yZWYoXCJwYXNzd29yZFwiKSkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy5zaWduaW5TY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgZW1haWw6IEpvaS5zdHJpbmcoKS5lbWFpbCgpLnJlcXVpcmVkKCksXG4gICAgICAgIHBhc3N3b3JkOiBKb2kuc3RyaW5nKCkubWluKDgpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIGZpcnN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBsYXN0TmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHJvbGU6IEpvaS5zdHJpbmcoKS5taW4oNSkuZW1wdHkoXCJcIiksXG4gICAgICAgIHBob25lTnVtYmVyOiBKb2kuc3RyaW5nKCkubWluKDEwKS5tYXgoMTUpLmVtcHR5KFwiXCIpLFxuICAgICAgICBwYXNzd29yZDogSm9pLnN0cmluZygpLm1pbig4KS5lbXB0eShcIlwiKSxcbiAgICAgICAgY29uZmlybVBhc3N3b3JkOiBKb2kuc3RyaW5nKCkudmFsaWQoSm9pLnJlZihcInBhc3N3b3JkXCIpKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgLy8gIFRPRE8gZmlndXJlIG91dCBob3cgYWRtaW4gY2FuIHVwZGF0ZSByb2xlXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcykud2l0aChcInBhc3N3b3JkXCIsIFwiY29uZmlybVBhc3N3b3JkXCIpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudmVyaWZ5RW1haWxTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgdG9rZW46IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgIH0pO1xuICAgIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSk7XG59O1xuIl19", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.signupSchema = (req, res, next) => {\n const schema = Joi.object({\n firstName: Joi.string().required(),\n lastName: Joi.string().required(),\n phoneNumber: Joi.string().min(10).max(15).required(),\n // role: Joi.string().min(5).required(),\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.signinSchema = (req, res, next) => {\n const schema = Joi.object({\n email: Joi.string().email().required(),\n password: Joi.string().min(8).required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n firstName: Joi.string().empty(\"\"),\n lastName: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n role: Joi.string().min(5).empty(\"\"),\n phoneNumber: Joi.string().min(10).max(15).empty(\"\"),\n password: Joi.string().min(8).empty(\"\"),\n confirmPassword: Joi.string().valid(Joi.ref(\"password\")).empty(\"\"),\n };\n\n // TODO figure out how admin can update role\n const schema = Joi.object(schemaRules).with(\"password\", \"confirmPassword\");\n\n validateRequest(req, next, schema);\n};\n\nexports.verifyEmailSchema = (req, res, next) => {\n const schema = Joi.object({\n token: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/17/authvalidators_175ce9e7525fe00eae54f078f7ddb132.map", "wrapperLength": 89 }, "result": { "scriptId": "2264", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7491, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7488, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signupSchema", "ranges": [ { "startOffset": 213, "endOffset": 654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.signinSchema", "ranges": [ { "startOffset": 680, "endOffset": 866, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 892, "endOffset": 1441, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.verifyEmailSchema", "ranges": [ { "startOffset": 1472, "endOffset": 1604, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false,\n // include all errors\n allowUnknown: true,\n // ignore unknown props\n stripUnknown: true // remove unknown props\n\n };\n const {\n error,\n value\n } = schema.validate(req.body, options);\n\n if (error) {\n const message = `Validation error: ${error.details.map(x => x.message).join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInZhbGlkYXRlUmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidmFsaWRhdGVSZXF1ZXN0IiwicmVxIiwibmV4dCIsInNjaGVtYSIsIm9wdGlvbnMiLCJhYm9ydEVhcmx5IiwiYWxsb3dVbmtub3duIiwic3RyaXBVbmtub3duIiwiZXJyb3IiLCJ2YWx1ZSIsInZhbGlkYXRlIiwiYm9keSIsIm1lc3NhZ2UiLCJkZXRhaWxzIiwibWFwIiwieCIsImpvaW4iXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUJDLGVBQWpCOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQ0MsTUFBcEMsRUFBNEM7QUFDeEMsUUFBTUMsT0FBTyxHQUFHO0FBQ1pDLElBQUFBLFVBQVUsRUFBRSxLQURBO0FBQ087QUFDbkJDLElBQUFBLFlBQVksRUFBRSxJQUZGO0FBRVE7QUFDcEJDLElBQUFBLFlBQVksRUFBRSxJQUhGLENBR1E7O0FBSFIsR0FBaEI7QUFNQSxRQUFNO0FBQUVDLElBQUFBLEtBQUY7QUFBU0MsSUFBQUE7QUFBVCxNQUFtQk4sTUFBTSxDQUFDTyxRQUFQLENBQWdCVCxHQUFHLENBQUNVLElBQXBCLEVBQTBCUCxPQUExQixDQUF6Qjs7QUFDQSxNQUFJSSxLQUFKLEVBQVc7QUFDUCxVQUFNSSxPQUFPLEdBQUkscUJBQW9CSixLQUFLLENBQUNLLE9BQU4sQ0FDaENDLEdBRGdDLENBQzNCQyxDQUFELElBQU9BLENBQUMsQ0FBQ0gsT0FEbUIsRUFFaENJLElBRmdDLENBRTNCLElBRjJCLENBRXJCLEVBRmhCO0FBR0FkLElBQUFBLElBQUksQ0FBQ1UsT0FBRCxDQUFKO0FBQ0gsR0FMRCxNQUtPO0FBQ0hYLElBQUFBLEdBQUcsQ0FBQ1UsSUFBSixHQUFXRixLQUFYO0FBQ0FQLElBQUFBLElBQUk7QUFDUDtBQUNKIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB2YWxpZGF0ZVJlcXVlc3Q7XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUmVxdWVzdChyZXEsIG5leHQsIHNjaGVtYSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIGFib3J0RWFybHk6IGZhbHNlLCAvLyBpbmNsdWRlIGFsbCBlcnJvcnNcbiAgICAgICAgYWxsb3dVbmtub3duOiB0cnVlLCAvLyBpZ25vcmUgdW5rbm93biBwcm9wc1xuICAgICAgICBzdHJpcFVua25vd246IHRydWUsIC8vIHJlbW92ZSB1bmtub3duIHByb3BzXG4gICAgfTtcblxuICAgIGNvbnN0IHsgZXJyb3IsIHZhbHVlIH0gPSBzY2hlbWEudmFsaWRhdGUocmVxLmJvZHksIG9wdGlvbnMpO1xuICAgIGlmIChlcnJvcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gYFZhbGlkYXRpb24gZXJyb3I6ICR7ZXJyb3IuZGV0YWlsc1xuICAgICAgICAgICAgLm1hcCgoeCkgPT4geC5tZXNzYWdlKVxuICAgICAgICAgICAgLmpvaW4oXCIsIFwiKX1gO1xuICAgICAgICBuZXh0KG1lc3NhZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5ib2R5ID0gdmFsdWU7XG4gICAgICAgIG5leHQoKTtcbiAgICB9XG59XG4iXX0=", "originalCode": "module.exports = validateRequest;\n\nfunction validateRequest(req, next, schema) {\n const options = {\n abortEarly: false, // include all errors\n allowUnknown: true, // ignore unknown props\n stripUnknown: true, // remove unknown props\n };\n\n const { error, value } = schema.validate(req.body, options);\n if (error) {\n const message = `Validation error: ${error.details\n .map((x) => x.message)\n .join(\", \")}`;\n next(message);\n } else {\n req.body = value;\n next();\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b9/validateRequest_b99d25348838cc66f02ed46a322e519c.map", "wrapperLength": 89 }, "result": { "scriptId": "2317", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2601, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2598, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "validateRequest", "ranges": [ { "startOffset": 124, "endOffset": 591, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const User = require(\"../user/user.model\");\n\nconst jwt = require(\"../../utils/jwt\");\n\nconst bcrypt = require(\"bcrypt\");\n\nconst crypto = require(\"crypto\");\n\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete\n};\n\nasync function login({\n email,\n password\n}) {\n const account = await getAccount({\n email\n });\n\n if (!account || // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n return {\n user: basicDetails(account),\n token\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error('Email \"' + params.email + '\" is already registered');\n throw error;\n }\n\n const account = await insertUser(params); // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n return {\n user: account,\n token\n };\n}\n\nasync function verifyEmail({\n token\n}) {\n const account = await getAccount({\n verificationToken: token\n });\n if (!account) throw \"Verification failed\";\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({\n email: params.email\n })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params); // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({\n id\n }); // validate if email was changed\n\n if (params.email && account.email !== params.email && (await getAccount({\n email: params.email\n }))) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n } // hash password if it was entered\n\n\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params\n });\n return basicDetails(updatedUser);\n} // TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\n\n\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map(x => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({\n id\n });\n return basicDetails(account);\n} // TODO MAKE IT ACCEPT AN ARRAY OF ID\n\n\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n/**==================== Helpers ====================== */\n\n\nasync function getAccount(param) {\n const account = await User.query().where({ ...param\n }).first();\n return account;\n}\n\nasync function insertUser(params) {\n const {\n firstName,\n lastName,\n email,\n password,\n role,\n phoneNumber\n } = params; // hash password and verification token\n\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString(); // create account\n\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken\n });\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguc2VydmljZS5qcyJdLCJuYW1lcyI6WyJVc2VyIiwicmVxdWlyZSIsImp3dCIsImJjcnlwdCIsImNyeXB0byIsInNlbmRFbWFpbCIsIm1vZHVsZSIsImV4cG9ydHMiLCJsb2dpbiIsInJlZ2lzdGVyIiwidmVyaWZ5RW1haWwiLCJjcmVhdGUiLCJ1cGRhdGUiLCJnZXRBbGwiLCJnZXRCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZSIsImVtYWlsIiwicGFzc3dvcmQiLCJhY2NvdW50IiwiZ2V0QWNjb3VudCIsImNvbXBhcmUiLCJlcnJvciIsIkVycm9yIiwidG9rZW4iLCJzaWduIiwidG9KU09OIiwidXNlciIsImJhc2ljRGV0YWlscyIsInBhcmFtcyIsIm9yaWdpbiIsImluc2VydFVzZXIiLCJ2ZXJpZmljYXRpb25Ub2tlbiIsIiRxdWVyeSIsInBhdGNoIiwidmVyaWZpZWQiLCJEYXRlIiwibm93IiwiaXNWZXJpZmllZCIsImlkIiwiaGFzaCIsInVwZGF0ZWRVc2VyIiwicXVlcnkiLCJwYXRjaEFuZEZldGNoQnlJZCIsImFjY291bnRzIiwibWFwIiwieCIsImRlbGV0ZUJ5SWQiLCJwYXJhbSIsIndoZXJlIiwiZmlyc3QiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsInJvbGUiLCJwaG9uZU51bWJlciIsImhhc2hlZFBhc3N3b3JkIiwicmFuZG9tVG9rZW5TdHJpbmciLCJpbnNlcnQiLCJhY3RpdmUiLCJ0b0lTT1N0cmluZyIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJjcmVhdGVkIiwidXBkYXRlZCIsInNlbmRWZXJpZmljYXRpb25FbWFpbCIsIm1lc3NhZ2UiLCJ2ZXJpZnlVcmwiLCJ0byIsInN1YmplY3QiLCJodG1sIiwic2VuZEFscmVhZHlSZWdpc3RlcmVkRW1haWwiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEdBQUcsR0FBR0QsT0FBTyxDQUFDLGlCQUFELENBQW5C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a0IsRUFBakY7QUFDQWlDLElBQUFBLE9BQU8sR0FBSTtzQkFDR0MsU0FBVSxLQUFJQSxTQUFVO1NBRHRDO0FBR0gsR0FMRCxNQUtPO0FBQ0hELElBQUFBLE9BQU8sR0FBSTs4QkFDVzlDLE9BQU8sQ0FBQ2EsaUJBQWtCLGFBRGhEO0FBRUg7O0FBRUQsUUFBTTNCLFNBQVMsQ0FBQztBQUNaOEQsSUFBQUEsRUFBRSxFQUFFaEQsT0FBTyxDQUFDRixLQURBO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUseUNBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHOztVQUVMSixPQUFRO0FBTEUsR0FBRCxDQUFmO0FBT0g7O0FBRUQsZUFBZUssMEJBQWYsQ0FBMENyRCxLQUExQyxFQUFpRGEsTUFBakQsRUFBeUQ7QUFDckQsTUFBSW1DLE9BQUo7O0FBQ0EsTUFBSW5DLE1BQUosRUFBWTtBQUNSbUMsSUFBQUEsT0FBTyxHQUFJLGdFQUErRG5DLE1BQU8sc0RBQWpGO0FBQ0gsR0FGRCxNQUVPO0FBQ0htQyxJQUFBQSxPQUFPLEdBQUksK0dBQVg7QUFDSDs7QUFFRCxRQUFNNUQsU0FBUyxDQUFDO0FBQ1o4RCxJQUFBQSxFQUFFLEVBQUVsRCxLQURRO0FBRVptRCxJQUFBQSxPQUFPLEVBQUUscURBRkc7QUFHWkMsSUFBQUEsSUFBSSxFQUFHO3VDQUN3QnBELEtBQU07aUJBQzVCZ0QsT0FBUTtBQUxMLEdBQUQsQ0FBZjtBQU9IIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgVXNlciA9IHJlcXVpcmUoXCIuLi91c2VyL3VzZXIubW9kZWxcIik7XG5jb25zdCBqd3QgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvand0XCIpO1xuY29uc3QgYmNyeXB0ID0gcmVxdWlyZShcImJjcnlwdFwiKTtcbmNvbnN0IGNyeXB0byA9IHJlcXVpcmUoXCJjcnlwdG9cIik7XG5jb25zdCBzZW5kRW1haWwgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZW1haWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8qKlxuICAgICAqIHJlZnJlc2h0b2tlblxuICAgICAqIHJldm9rZXRva2VuXG4gICAgICogZm9yZ290UGFzc3dvcmRcbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiB2YWxpZGF0ZVJlc2V0VG9rZW5cbiAgICAgKiByZXNldFBhc3N3b3JkXG4gICAgICovXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgdmVyaWZ5RW1haWwsXG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZSxcbiAgICBnZXRBbGwsXG4gICAgZ2V0QnlJZCxcbiAgICBkZWxldGU6IF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBsb2dpbih7IGVtYWlsLCBwYXNzd29yZCB9KSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBlbWFpbCB9KTtcblxuICAgIGlmIChcbiAgICAgICAgIWFjY291bnQgfHxcbiAgICAgICAgLy8gIWFjY291bnQuaXNWZXJpZmllZCB8fFxuICAgICAgICAhKGF3YWl0IGJjcnlwdC5jb21wYXJlKHBhc3N3b3JkLCBhY2NvdW50LnBhc3N3b3JkKSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXCJFbWFpbCBvciBwYXNzd29yZCBpcyBpbmNvcnJlY3RcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudC50b0pTT04oKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBiYXNpY0RldGFpbHMoYWNjb3VudCksXG4gICAgICAgIHRva2VuLFxuICAgIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyKHBhcmFtcywgb3JpZ2luKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgLy8gc2VuZCBhbHJlYWR5IHJlZ2lzdGVyZWQgZXJyb3IgaW4gZW1haWwgdG8gcHJldmVudCBhY2NvdW50IGVudW1lcmF0aW9uXG4gICAgICAgIC8vIGF3YWl0IHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKHBhcmFtcy5lbWFpbCwgb3JpZ2luKTtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICAgICAnRW1haWwgXCInICsgcGFyYW1zLmVtYWlsICsgJ1wiIGlzIGFscmVhZHkgcmVnaXN0ZXJlZCdcbiAgICAgICAgKTtcblxuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgaW5zZXJ0VXNlcihwYXJhbXMpO1xuXG4gICAgLy8gc2VuZCBlbWFpbDtcbiAgICAvLyBhd2FpdCBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKTtcblxuICAgIGNvbnN0IHRva2VuID0gYXdhaXQgand0LnNpZ24oYWNjb3VudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB1c2VyOiBhY2NvdW50LFxuICAgICAgICB0b2tlbixcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlFbWFpbCh7IHRva2VuIH0pIHtcbiAgICBjb25zdCBhY2NvdW50ID0gYXdhaXQgZ2V0QWNjb3VudCh7IHZlcmlmaWNhdGlvblRva2VuOiB0b2tlbiB9KTtcblxuICAgIGlmICghYWNjb3VudCkgdGhyb3cgXCJWZXJpZmljYXRpb24gZmFpbGVkXCI7XG5cbiAgICBhd2FpdCBhY2NvdW50LiRxdWVyeSgpLnBhdGNoKHtcbiAgICAgICAgdmVyaWZpZWQ6IERhdGUubm93KCksXG4gICAgICAgIGlzVmVyaWZpZWQ6IHRydWUsXG4gICAgICAgIHZlcmlmaWNhdGlvblRva2VuOiBudWxsLFxuICAgIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGVcbiAgICBpZiAoYXdhaXQgZ2V0QWNjb3VudCh7IGVtYWlsOiBwYXJhbXMuZW1haWwgfSkpIHtcbiAgICAgICAgdGhyb3cgJ0VtYWlsIFwiJyArIHBhcmFtcy5lbWFpbCArICdcIiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQnO1xuICAgIH1cblxuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBpbnNlcnRVc2VyKHBhcmFtcyk7XG5cbiAgICAvLyBUT0RPPyBiaW5kIHRvIGNvbXBhbnkgaGVyZS5cblxuICAgIHJldHVybiBiYXNpY0RldGFpbHMoYWNjb3VudCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IGdldEFjY291bnQoeyBpZCB9KTtcblxuICAgIC8vIHZhbGlkYXRlIGlmIGVtYWlsIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMuZW1haWwgJiZcbiAgICAgICAgYWNjb3VudC5lbWFpbCAhPT0gcGFyYW1zLmVtYWlsICYmXG4gICAgICAgIChhd2FpdCBnZXRBY2NvdW50KHsgZW1haWw6IHBhcmFtcy5lbWFpbCB9KSlcbiAgICApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBuZXcgRXJyb3IoYEVtYWlsICR7cGFyYW1zLmVtYWlsfSBpcyBhbHJlYWR5IHRha2VuYCk7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgaWYgaXQgd2FzIGVudGVyZWRcbiAgICBpZiAocGFyYW1zLnBhc3N3b3JkKSB7XG4gICAgICAgIHBhcmFtcy5wYXNzd29yZCA9IGF3YWl0IGhhc2gocGFyYW1zLnBhc3N3b3JkKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkVXNlciA9IGF3YWl0IFVzZXIucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgeyAuLi5wYXJhbXMgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKHVwZGF0ZWRVc2VyKTtcbn1cblxuLy8gVE9ETyBNQUtFIFNPIElUIENBTiBRVUVSWSBGT1IgRElGRkVSRU5UIFRZUEVTIE9GIFVTRVJTXG5hc3luYyBmdW5jdGlvbiBnZXRBbGwoKSB7XG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBVc2VyLnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGFjY291bnRzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QnlJZChpZCkge1xuICAgIGNvbnN0IGFjY291bnQgPSBhd2FpdCBnZXRBY2NvdW50KHsgaWQgfSk7XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhhY2NvdW50KTtcbn1cblxuLy8gVE9ETyBNQUtFIElUIEFDQ0VQVCBBTiBBUlJBWSBPRiBJRFxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShpZCkge1xuICAgIGF3YWl0IFVzZXIucXVlcnkoKS5kZWxldGVCeUlkKGlkKTtcbn1cblxuLyoqPT09PT09PT09PT09PT09PT09PT0gSGVscGVycyA9PT09PT09PT09PT09PT09PT09PT09ICovXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50KHBhcmFtKSB7XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbSB9KVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gYWNjb3VudDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zZXJ0VXNlcihwYXJhbXMpIHtcbiAgICBjb25zdCB7IGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsLCBwYXNzd29yZCwgcm9sZSwgcGhvbmVOdW1iZXIgfSA9IHBhcmFtcztcblxuICAgIC8vIGhhc2ggcGFzc3dvcmQgYW5kIHZlcmlmaWNhdGlvbiB0b2tlblxuICAgIGNvbnN0IGhhc2hlZFBhc3N3b3JkID0gYXdhaXQgaGFzaChwYXNzd29yZCwgMTApO1xuICAgIGNvbnN0IHZlcmlmaWNhdGlvblRva2VuID0gcmFuZG9tVG9rZW5TdHJpbmcoKTtcblxuICAgIC8vIGNyZWF0ZSBhY2NvdW50XG4gICAgY29uc3QgYWNjb3VudCA9IGF3YWl0IFVzZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICBlbWFpbCxcbiAgICAgICAgZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZSxcbiAgICAgICAgcGFzc3dvcmQ6IGhhc2hlZFBhc3N3b3JkLFxuICAgICAgICBwaG9uZU51bWJlcixcbiAgICAgICAgcm9sZTogcm9sZSxcbiAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICBpc1ZlcmlmaWVkOiBmYWxzZSxcbiAgICAgICAgdmVyaWZpZWQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgdmVyaWZpY2F0aW9uVG9rZW4sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYmFzaWNEZXRhaWxzKGFjY291bnQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNoKHBhc3N3b3JkKSB7XG4gICAgcmV0dXJuIGF3YWl0IGJjcnlwdC5oYXNoKHBhc3N3b3JkLCAxMCk7XG59XG5cbmZ1bmN0aW9uIHJhbmRvbVRva2VuU3RyaW5nKCkge1xuICAgIHJldHVybiBjcnlwdG8ucmFuZG9tQnl0ZXMoNDApLnRvU3RyaW5nKFwiaGV4XCIpO1xufVxuXG5mdW5jdGlvbiBiYXNpY0RldGFpbHMoYWNjb3VudCkge1xuICAgIGNvbnN0IHtcbiAgICAgICAgaWQsXG4gICAgICAgIGZpcnN0TmFtZSxcbiAgICAgICAgbGFzdE5hbWUsXG4gICAgICAgIGVtYWlsLFxuICAgICAgICByb2xlLFxuICAgICAgICBjcmVhdGVkLFxuICAgICAgICB1cGRhdGVkLFxuICAgICAgICBpc1ZlcmlmaWVkLFxuICAgIH0gPSBhY2NvdW50O1xuICAgIHJldHVybiB7XG4gICAgICAgIGlkLFxuICAgICAgICBmaXJzdE5hbWUsXG4gICAgICAgIGxhc3ROYW1lLFxuICAgICAgICBlbWFpbCxcbiAgICAgICAgcm9sZSxcbiAgICAgICAgY3JlYXRlZCxcbiAgICAgICAgdXBkYXRlZCxcbiAgICAgICAgaXNWZXJpZmllZCxcbiAgICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVmVyaWZpY2F0aW9uRW1haWwoYWNjb3VudCwgb3JpZ2luKSB7XG4gICAgbGV0IG1lc3NhZ2U7XG4gICAgaWYgKG9yaWdpbikge1xuICAgICAgICBjb25zdCB2ZXJpZnlVcmwgPSBgJHtvcmlnaW59L2F1dGgvdmVyaWZ5LWVtYWlsP3Rva2VuPSR7YWNjb3VudC52ZXJpZmljYXRpb25Ub2tlbn1gO1xuICAgICAgICBtZXNzYWdlID0gYDxwPiBQbGVhc2UgY2xpY2sgdGhlIGJlbG93IGxpbmsgdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzczo8L3A+XG4gICAgICAgIDxwPjxhIGhyZWY9XCIke3ZlcmlmeVVybH1cIj4ke3ZlcmlmeVVybH08L2E+PC9wPlxuICAgICAgICBgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+UGxlYXNlIHVzZSB0aGUgYmVsb3cgdG9rZW4gdG8gdmVyaWZ5IHlvdXIgZW1haWwgYWRkcmVzcyB3aXRoIHRoZSA8Y29kZT4vYXV0aC92ZXJpZnktZW1haWw8L2NvZGU+IGFwaSByb3V0ZTo8L3A+XG4gICAgICAgICAgICAgICAgICAgPHA+PGNvZGU+JHthY2NvdW50LnZlcmlmaWNhdGlvblRva2VufTwvY29kZT48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogYWNjb3VudC5lbWFpbCxcbiAgICAgICAgc3ViamVjdDogXCJTaWduLXVwIHZlcmlmaWNhdGlvbiBBUEkgLSBWZXJpZnkgRW1haWxcIixcbiAgICAgICAgaHRtbDogYDxoND5WZXJpZnkgRW1haWw8L2g0PlxuICAgICAgICA8cD5UaGFua3MgZm9yIHJlZ2lzdGVyaW5nITwvcD5cbiAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlbmRBbHJlYWR5UmVnaXN0ZXJlZEVtYWlsKGVtYWlsLCBvcmlnaW4pIHtcbiAgICBsZXQgbWVzc2FnZTtcbiAgICBpZiAob3JpZ2luKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBgPHA+SWYgeW91IGRvbid0IGtub3cgeW91ciBwYXNzd29yZCBwbGVhc2UgdmlzaXQgdGhlIDxhIGhyZWY9XCIke29yaWdpbn0vYXV0aC9mb3Jnb3QtcGFzc3dvcmRcIj5mb3Jnb3QgcGFzc3dvcmQ8L2E+IHBhZ2UuPC9wPmA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZSA9IGA8cD5JZiB5b3UgZG9uJ3Qga25vdyB5b3VyIHBhc3N3b3JkIHlvdSBjYW4gcmVzZXQgaXQgdmlhIHRoZSA8Y29kZT4vYXV0aC9mb3Jnb3QtcGFzc3dvcmQ8L2NvZGU+IGFwaSByb3V0ZS48L3A+YDtcbiAgICB9XG5cbiAgICBhd2FpdCBzZW5kRW1haWwoe1xuICAgICAgICB0bzogZW1haWwsXG4gICAgICAgIHN1YmplY3Q6IFwiU2lnbi11cCBWZXJpZmljYXRpb24gQVBJIC0gRW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkXCIsXG4gICAgICAgIGh0bWw6IGA8aDQ+RW1haWwgQWxyZWFkeSBSZWdpc3RlcmVkPC9oND5cbiAgICAgICAgICAgICAgIDxwPllvdXIgZW1haWwgPHN0cm9uZz4ke2VtYWlsfTwvc3Ryb25nPiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuPC9wPlxuICAgICAgICAgICAgICAgJHttZXNzYWdlfWAsXG4gICAgfSk7XG59XG4iXX0=", "originalCode": "const User = require(\"../user/user.model\");\nconst jwt = require(\"../../utils/jwt\");\nconst bcrypt = require(\"bcrypt\");\nconst crypto = require(\"crypto\");\nconst sendEmail = require(\"../../utils/email\");\n\nmodule.exports = {\n /**\n * refreshtoken\n * revoketoken\n * forgotPassword\n * validateResetToken\n * validateResetToken\n * resetPassword\n */\n login,\n register,\n verifyEmail,\n create,\n update,\n getAll,\n getById,\n delete: _delete,\n};\n\nasync function login({ email, password }) {\n const account = await getAccount({ email });\n\n if (\n !account ||\n // !account.isVerified ||\n !(await bcrypt.compare(password, account.password))\n ) {\n const error = new Error(\"Email or password is incorrect\");\n throw error;\n }\n\n const token = await jwt.sign(account.toJSON());\n\n return {\n user: basicDetails(account),\n token,\n };\n}\n\nasync function register(params, origin) {\n // validate\n if (await getAccount({ email: params.email })) {\n // send already registered error in email to prevent account enumeration\n // await sendAlreadyRegisteredEmail(params.email, origin);\n const error = new Error(\n 'Email \"' + params.email + '\" is already registered'\n );\n\n throw error;\n }\n\n const account = await insertUser(params);\n\n // send email;\n // await sendVerificationEmail(account, origin);\n\n const token = await jwt.sign(account);\n\n return {\n user: account,\n token,\n };\n}\n\nasync function verifyEmail({ token }) {\n const account = await getAccount({ verificationToken: token });\n\n if (!account) throw \"Verification failed\";\n\n await account.$query().patch({\n verified: Date.now(),\n isVerified: true,\n verificationToken: null,\n });\n}\n\nasync function create(params) {\n // validate\n if (await getAccount({ email: params.email })) {\n throw 'Email \"' + params.email + '\" is already registered';\n }\n\n const account = await insertUser(params);\n\n // TODO? bind to company here.\n\n return basicDetails(account);\n}\n\nasync function update(id, params) {\n const account = await getAccount({ id });\n\n // validate if email was changed\n if (\n params.email &&\n account.email !== params.email &&\n (await getAccount({ email: params.email }))\n ) {\n const error = new Error(`Email ${params.email} is already taken`);\n throw error;\n }\n\n // hash password if it was entered\n if (params.password) {\n params.password = await hash(params.password);\n }\n\n const updatedUser = await User.query().patchAndFetchById(id, { ...params });\n\n return basicDetails(updatedUser);\n}\n\n// TODO MAKE SO IT CAN QUERY FOR DIFFERENT TYPES OF USERS\nasync function getAll() {\n const accounts = await User.query();\n return accounts.map((x) => basicDetails(x));\n}\n\nasync function getById(id) {\n const account = await getAccount({ id });\n return basicDetails(account);\n}\n\n// TODO MAKE IT ACCEPT AN ARRAY OF ID\nasync function _delete(id) {\n await User.query().deleteById(id);\n}\n\n/**==================== Helpers ====================== */\nasync function getAccount(param) {\n const account = await User.query()\n .where({ ...param })\n .first();\n return account;\n}\n\nasync function insertUser(params) {\n const { firstName, lastName, email, password, role, phoneNumber } = params;\n\n // hash password and verification token\n const hashedPassword = await hash(password, 10);\n const verificationToken = randomTokenString();\n\n // create account\n const account = await User.query().insert({\n email,\n firstName,\n lastName,\n password: hashedPassword,\n phoneNumber,\n role: role,\n active: true,\n isVerified: false,\n verified: new Date().toISOString(),\n verificationToken,\n });\n\n return basicDetails(account);\n}\n\nasync function hash(password) {\n return await bcrypt.hash(password, 10);\n}\n\nfunction randomTokenString() {\n return crypto.randomBytes(40).toString(\"hex\");\n}\n\nfunction basicDetails(account) {\n const {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n } = account;\n return {\n id,\n firstName,\n lastName,\n email,\n role,\n created,\n updated,\n isVerified,\n };\n}\n\nasync function sendVerificationEmail(account, origin) {\n let message;\n if (origin) {\n const verifyUrl = `${origin}/auth/verify-email?token=${account.verificationToken}`;\n message = `<p> Please click the below link to verify your email address:</p>\n <p><a href=\"${verifyUrl}\">${verifyUrl}</a></p>\n `;\n } else {\n message = `<p>Please use the below token to verify your email address with the <code>/auth/verify-email</code> api route:</p>\n <p><code>${account.verificationToken}</code></p>`;\n }\n\n await sendEmail({\n to: account.email,\n subject: \"Sign-up verification API - Verify Email\",\n html: `<h4>Verify Email</h4>\n <p>Thanks for registering!</p>\n ${message}`,\n });\n}\n\nasync function sendAlreadyRegisteredEmail(email, origin) {\n let message;\n if (origin) {\n message = `<p>If you don't know your password please visit the <a href=\"${origin}/auth/forgot-password\">forgot password</a> page.</p>`;\n } else {\n message = `<p>If you don't know your password you can reset it via the <code>/auth/forgot-password</code> api route.</p>`;\n }\n\n await sendEmail({\n to: email,\n subject: \"Sign-up Verification API - Email Already Registered\",\n html: `<h4>Email Already Registered</h4>\n <p>Your email <strong>${email}</strong> is already registered.</p>\n ${message}`,\n });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/15/authservice_15139629ee8738726404e916e3a02258.map", "wrapperLength": 89 }, "result": { "scriptId": "2318", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 22003, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 22000, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "login", "ranges": [ { "startOffset": 546, "endOffset": 944, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "register", "ranges": [ { "startOffset": 946, "endOffset": 1502, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "verifyEmail", "ranges": [ { "startOffset": 1504, "endOffset": 1779, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1781, "endOffset": 2062, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2064, "endOffset": 2621, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAll", "ranges": [ { "startOffset": 2682, "endOffset": 2793, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 2795, "endOffset": 2907, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 2948, "endOffset": 3015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAccount", "ranges": [ { "startOffset": 3076, "endOffset": 3198, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "insertUser", "ranges": [ { "startOffset": 3200, "endOffset": 3791, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "hash", "ranges": [ { "startOffset": 3793, "endOffset": 3868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "randomTokenString", "ranges": [ { "startOffset": 3870, "endOffset": 3951, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 3953, "endOffset": 4226, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendVerificationEmail", "ranges": [ { "startOffset": 4228, "endOffset": 4965, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "sendAlreadyRegisteredEmail", "ranges": [ { "startOffset": 4967, "endOffset": 5605, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n\n}\n\nModel.knex(db);\nmodule.exports = User;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVzZXIubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiVXNlciIsInRhYmxlTmFtZSIsInVzZXIiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLDRCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLFVBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBSG9COztBQU16Qk4sS0FBSyxDQUFDTyxJQUFOLENBQVdKLEVBQVg7QUFFQUssTUFBTSxDQUFDQyxPQUFQLEdBQWlCTCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vZGJcIik7XG5cbmNsYXNzIFVzZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLnVzZXI7XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBVc2VyO1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst db = require(\"../../db\");\n\nclass User extends Model {\n static get tableName() {\n return tableNames.user;\n }\n}\n\nModel.knex(db);\n\nmodule.exports = User;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/65/usermodel_65a16864dea2cc43f1cea59fb9ce1a95.map", "wrapperLength": 89 }, "result": { "scriptId": "2319", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1454, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1451, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "User", "ranges": [ { "startOffset": 224, "endOffset": 224, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 260, "endOffset": 309, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRhYmxlTmFtZXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInVzZXIiLCJhZGRyZXNzIiwiY29tcGFueSIsImFjY291bnRzIiwiY2F0ZWdvcnkiLCJtZW51IiwiaXRlbSIsIm9yZGVyIiwib3JkZXJJdGVtIiwicGF5bWVudHMiXSwibWFwcGluZ3MiOiJBQUFBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFBSSxFQUFFLE1BRE87QUFFYkMsRUFBQUEsT0FBTyxFQUFFLFNBRkk7QUFHYkMsRUFBQUEsT0FBTyxFQUFFLFNBSEk7QUFJYkMsRUFBQUEsUUFBUSxFQUFFLFVBSkc7QUFLYkMsRUFBQUEsUUFBUSxFQUFFLFVBTEc7QUFNYkMsRUFBQUEsSUFBSSxFQUFFLE1BTk87QUFPYkMsRUFBQUEsSUFBSSxFQUFFLE1BUE87QUFRYkMsRUFBQUEsS0FBSyxFQUFFLE9BUk07QUFTYkMsRUFBQUEsU0FBUyxFQUFFLFdBVEU7QUFVYkMsRUFBQUEsUUFBUSxFQUFFO0FBVkcsQ0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICB1c2VyOiBcInVzZXJcIixcbiAgICBhZGRyZXNzOiBcImFkZHJlc3NcIixcbiAgICBjb21wYW55OiBcImNvbXBhbnlcIixcbiAgICBhY2NvdW50czogXCJhY2NvdW50c1wiLFxuICAgIGNhdGVnb3J5OiBcImNhdGVnb3J5XCIsXG4gICAgbWVudTogXCJtZW51XCIsXG4gICAgaXRlbTogXCJpdGVtXCIsXG4gICAgb3JkZXI6IFwib3JkZXJcIixcbiAgICBvcmRlckl0ZW06IFwib3JkZXJJdGVtXCIsXG4gICAgcGF5bWVudHM6IFwicGF5bWVudHNcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n user: \"user\",\n address: \"address\",\n company: \"company\",\n accounts: \"accounts\",\n category: \"category\",\n menu: \"menu\",\n item: \"item\",\n order: \"order\",\n orderItem: \"orderItem\",\n payments: \"payments\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/d1/tableNames_d158fb35bde4ba2feb47fa73fcd1c0db.map", "wrapperLength": 89 }, "result": { "scriptId": "2532", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1435, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1432, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Knex = require(\"knex\");\n\nconst {\n Model\n} = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\n\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\nconst db = Knex(connectionConfig);\nModel.knex(db);\nmodule.exports = db;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRiLmpzIl0sIm5hbWVzIjpbIktuZXgiLCJyZXF1aXJlIiwiTW9kZWwiLCJrbmV4RmlsZSIsImVudmlyb25tZW50IiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiY29ubmVjdGlvbkNvbmZpZyIsImRiIiwia25leCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBcEI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQTtBQUFGLElBQVlELE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUVBLE1BQU1FLFFBQVEsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBeEI7O0FBQ0EsTUFBTUcsV0FBVyxHQUFHQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUMsUUFBWixJQUF3QixhQUE1QztBQUNBLE1BQU1DLGdCQUFnQixHQUFHTCxRQUFRLENBQUNDLFdBQUQsQ0FBakM7QUFFQSxNQUFNSyxFQUFFLEdBQUdULElBQUksQ0FBQ1EsZ0JBQUQsQ0FBZjtBQUVBTixLQUFLLENBQUNRLElBQU4sQ0FBV0QsRUFBWDtBQUVBRSxNQUFNLENBQUNDLE9BQVAsR0FBaUJILEVBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgS25leCA9IHJlcXVpcmUoXCJrbmV4XCIpO1xuY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcblxuY29uc3Qga25leEZpbGUgPSByZXF1aXJlKFwiLi4va25leGZpbGVcIik7XG5jb25zdCBlbnZpcm9ubWVudCA9IHByb2Nlc3MuZW52Lk5PREVfRU5WIHx8IFwiZGV2ZWxvcG1lbnRcIjtcbmNvbnN0IGNvbm5lY3Rpb25Db25maWcgPSBrbmV4RmlsZVtlbnZpcm9ubWVudF07XG5cbmNvbnN0IGRiID0gS25leChjb25uZWN0aW9uQ29uZmlnKTtcblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGI7XG4iXX0=", "originalCode": "const Knex = require(\"knex\");\nconst { Model } = require(\"objection\");\n\nconst knexFile = require(\"../knexfile\");\nconst environment = process.env.NODE_ENV || \"development\";\nconst connectionConfig = knexFile[environment];\n\nconst db = Knex(connectionConfig);\n\nModel.knex(db);\n\nmodule.exports = db;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/06/db_061f2ffe7a9d03a98dba0f960ecba1d1.map", "wrapperLength": 89 }, "result": { "scriptId": "2533", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1629, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1626, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n },\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10\n },\n migrations: {\n directory: __dirname + \"/db/migrations\"\n },\n seeds: {\n directory: __dirname + \"/db/seeds\"\n }\n }\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImtuZXhmaWxlLmpzIl0sIm5hbWVzIjpbInJlcXVpcmUiLCJjb25maWciLCJtb2R1bGUiLCJleHBvcnRzIiwidGVzdCIsImNsaWVudCIsImNvbm5lY3Rpb24iLCJkYXRhYmFzZSIsInByb2Nlc3MiLCJlbnYiLCJQT1NUR1JFU19EQl9URVNUIiwidXNlciIsIlBPU1RHUkVTX1VTRVIiLCJwYXNzd29yZCIsIlBPU1RHUkVTX1BBU1NXT1JEIiwibWlncmF0aW9ucyIsImRpcmVjdG9yeSIsIl9fZGlybmFtZSIsInNlZWRzIiwiZGV2ZWxvcG1lbnQiLCJQT1NUR1JFU19EQiIsInByb2R1Y3Rpb24iLCJEQVRBQkFTRV9VUkwiLCJwb29sIiwibWluIiwibWF4Il0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBQSxPQUFPLENBQUMsUUFBRCxDQUFQLENBQWtCQyxNQUFsQjs7QUFFQUMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLElBQUksRUFBRTtBQUNGQyxJQUFBQSxNQUFNLEVBQUUsSUFETjtBQUVGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxnQkFGZDtBQUdSQyxNQUFBQSxJQUFJLEVBQUVILE9BQU8sQ0FBQ0MsR0FBUixDQUFZRyxhQUhWO0FBSVJDLE1BQUFBLFFBQVEsRUFBRUwsT0FBTyxDQUFDQyxHQUFSLENBQVlLO0FBSmQsS0FGVjtBQVFGQyxJQUFBQSxVQUFVLEVBQUU7QUFDUkMsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEZixLQVJWO0FBWUZDLElBQUFBLEtBQUssRUFBRTtBQUNIRixNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURwQjtBQVpMLEdBRE87QUFrQmJFLEVBQUFBLFdBQVcsRUFBRTtBQUNUZCxJQUFBQSxNQUFNLEVBQUUsSUFEQztBQUVUQyxJQUFBQSxVQUFVLEVBQUU7QUFDUjtBQUNBQyxNQUFBQSxRQUFRLEVBQUVDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZVyxXQUZkO0FBR1JULE1BQUFBLElBQUksRUFBRUgsT0FBTyxDQUFDQyxHQUFSLENBQVlHLGFBSFY7QUFJUkMsTUFBQUEsUUFBUSxFQUFFTCxPQUFPLENBQUNDLEdBQVIsQ0FBWUs7QUFKZCxLQUZIO0FBUVRDLElBQUFBLFVBQVUsRUFBRTtBQUNSQyxNQUFBQSxTQUFTLEVBQUVDLFNBQVMsR0FBRztBQURmLEtBUkg7QUFZVEMsSUFBQUEsS0FBSyxFQUFFO0FBQ0hGLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRHBCO0FBWkUsR0FsQkE7QUFtQ2JJLEVBQUFBLFVBQVUsRUFBRTtBQUNSaEIsSUFBQUEsTUFBTSxFQUFFLElBREE7QUFFUkMsSUFBQUEsVUFBVSxFQUFFRSxPQUFPLENBQUNDLEdBQVIsQ0FBWWEsWUFGaEI7QUFHUkMsSUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLE1BQUFBLEdBQUcsRUFBRSxDQURIO0FBRUZDLE1BQUFBLEdBQUcsRUFBRTtBQUZILEtBSEU7QUFPUlYsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFNBQVMsRUFBRUMsU0FBUyxHQUFHO0FBRGYsS0FQSjtBQVdSQyxJQUFBQSxLQUFLLEVBQUU7QUFDSEYsTUFBQUEsU0FBUyxFQUFFQyxTQUFTLEdBQUc7QUFEcEI7QUFYQztBQW5DQyxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8vIFVwZGF0ZSB3aXRoIHlvdXIgY29uZmlnIHNldHRpbmdzLlxucmVxdWlyZShcImRvdGVudlwiKS5jb25maWcoKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgdGVzdDoge1xuICAgICAgICBjbGllbnQ6IFwicGdcIixcbiAgICAgICAgY29ubmVjdGlvbjoge1xuICAgICAgICAgICAgLy8gaG9zdDogXCIxMjcuMC4wLjFcIixcbiAgICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5QT1NUR1JFU19EQl9URVNULFxuICAgICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfVVNFUixcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5QT1NUR1JFU19QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgICAgbWlncmF0aW9uczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9taWdyYXRpb25zXCIsXG4gICAgICAgIH0sXG5cbiAgICAgICAgc2VlZHM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvc2VlZHNcIixcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZGV2ZWxvcG1lbnQ6IHtcbiAgICAgICAgY2xpZW50OiBcInBnXCIsXG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICAgIC8vIGhvc3Q6IFwiMTI3LjAuMC4xXCIsXG4gICAgICAgICAgICBkYXRhYmFzZTogcHJvY2Vzcy5lbnYuUE9TVEdSRVNfREIsXG4gICAgICAgICAgICB1c2VyOiBwcm9jZXNzLmVudi5QT1NUR1JFU19VU0VSLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHByb2Nlc3MuZW52LlBPU1RHUkVTX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgICBtaWdyYXRpb25zOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL21pZ3JhdGlvbnNcIixcbiAgICAgICAgfSxcblxuICAgICAgICBzZWVkczoge1xuICAgICAgICAgICAgZGlyZWN0b3J5OiBfX2Rpcm5hbWUgKyBcIi9kYi9zZWVkc1wiLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9kdWN0aW9uOiB7XG4gICAgICAgIGNsaWVudDogXCJwZ1wiLFxuICAgICAgICBjb25uZWN0aW9uOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9VUkwsXG4gICAgICAgIHBvb2w6IHtcbiAgICAgICAgICAgIG1pbjogMixcbiAgICAgICAgICAgIG1heDogMTAsXG4gICAgICAgIH0sXG4gICAgICAgIG1pZ3JhdGlvbnM6IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogX19kaXJuYW1lICsgXCIvZGIvbWlncmF0aW9uc1wiLFxuICAgICAgICB9LFxuXG4gICAgICAgIHNlZWRzOiB7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IF9fZGlybmFtZSArIFwiL2RiL3NlZWRzXCIsXG4gICAgICAgIH0sXG4gICAgfSxcbn07XG4iXX0=", "originalCode": "// Update with your config settings.\nrequire(\"dotenv\").config();\n\nmodule.exports = {\n test: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB_TEST,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n development: {\n client: \"pg\",\n connection: {\n // host: \"127.0.0.1\",\n database: process.env.POSTGRES_DB,\n user: process.env.POSTGRES_USER,\n password: process.env.POSTGRES_PASSWORD,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n\n production: {\n client: \"pg\",\n connection: process.env.DATABASE_URL,\n pool: {\n min: 2,\n max: 10,\n },\n migrations: {\n directory: __dirname + \"/db/migrations\",\n },\n\n seeds: {\n directory: __dirname + \"/db/seeds\",\n },\n },\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/e2/knexfile_e268b34e213dcf9ff4bbc9c1fff3199f.map", "wrapperLength": 89 }, "result": { "scriptId": "2765", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4994, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4991, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(payload, process.env.JWT_SECRET, {\n expiresIn: \"3h\"\n }, (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n });\n });\n}\n\nmodule.exports = {\n sign\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImp3dC5qcyJdLCJuYW1lcyI6WyJqd3QiLCJyZXF1aXJlIiwic2lnbiIsInBheWxvYWQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb2Nlc3MiLCJlbnYiLCJKV1RfU0VDUkVUIiwiZXhwaXJlc0luIiwiZXJyb3IiLCJ0b2tlbiIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBbkI7O0FBRUEsU0FBU0MsSUFBVCxDQUFjQyxPQUFkLEVBQXVCO0FBQ25CLFNBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQ04sSUFBQUEsR0FBRyxDQUFDRSxJQUFKLENBQ0lDLE9BREosRUFFSUksT0FBTyxDQUFDQyxHQUFSLENBQVlDLFVBRmhCLEVBR0k7QUFDSUMsTUFBQUEsU0FBUyxFQUFFO0FBRGYsS0FISixFQU1JLENBQUNDLEtBQUQsRUFBUUMsS0FBUixLQUFrQjtBQUNkLFVBQUlELEtBQUosRUFBVyxPQUFPTCxNQUFNLENBQUNLLEtBQUQsQ0FBYjtBQUNYLGFBQU9OLE9BQU8sQ0FBQ08sS0FBRCxDQUFkO0FBQ0gsS0FUTDtBQVdILEdBWk0sQ0FBUDtBQWFIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlosRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGp3dCA9IHJlcXVpcmUoXCJqc29ud2VidG9rZW5cIik7XG5cbmZ1bmN0aW9uIHNpZ24ocGF5bG9hZCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGp3dC5zaWduKFxuICAgICAgICAgICAgcGF5bG9hZCxcbiAgICAgICAgICAgIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQsXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZXhwaXJlc0luOiBcIjNoXCIsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGVycm9yLCB0b2tlbikgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHJlamVjdChlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUodG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBzaWduLFxufTtcbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\n\nfunction sign(payload) {\n return new Promise((resolve, reject) => {\n jwt.sign(\n payload,\n process.env.JWT_SECRET,\n {\n expiresIn: \"3h\",\n },\n (error, token) => {\n if (error) return reject(error);\n return resolve(token);\n }\n );\n });\n}\n\nmodule.exports = {\n sign,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/a2/jwt_a2ecd03f3666d6bdf618e5bb010e6f13.map", "wrapperLength": 89 }, "result": { "scriptId": "2817", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1961, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sign", "ranges": [ { "startOffset": 127, "endOffset": 376, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const nodemailer = require(\"nodemailer\");\n\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({\n to,\n subject,\n html,\n from = config[\"emailFrom\"]\n}) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({\n from,\n to,\n subject,\n html\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVtYWlsLmpzIl0sIm5hbWVzIjpbIm5vZGVtYWlsZXIiLCJyZXF1aXJlIiwiY29uZmlnIiwibW9kdWxlIiwiZXhwb3J0cyIsInNlbmRFbWFpbCIsInRvIiwic3ViamVjdCIsImh0bWwiLCJmcm9tIiwidHJhbnNwb3J0ZXIiLCJjcmVhdGVUcmFuc3BvcnQiLCJzZW5kTWFpbCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNQyxNQUFNLEdBQUdELE9BQU8sQ0FBQyxnQkFBRCxDQUF0Qjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCQyxTQUFqQjs7QUFFQSxlQUFlQSxTQUFmLENBQXlCO0FBQUVDLEVBQUFBLEVBQUY7QUFBTUMsRUFBQUEsT0FBTjtBQUFlQyxFQUFBQSxJQUFmO0FBQXFCQyxFQUFBQSxJQUFJLEdBQUdQLE1BQU0sQ0FBQyxXQUFEO0FBQWxDLENBQXpCLEVBQTRFO0FBQ3hFLFFBQU1RLFdBQVcsR0FBR1YsVUFBVSxDQUFDVyxlQUFYLENBQTJCVCxNQUFNLENBQUMsYUFBRCxDQUFqQyxDQUFwQjtBQUNBLFFBQU1RLFdBQVcsQ0FBQ0UsUUFBWixDQUFxQjtBQUFFSCxJQUFBQSxJQUFGO0FBQVFILElBQUFBLEVBQVI7QUFBWUMsSUFBQUEsT0FBWjtBQUFxQkMsSUFBQUE7QUFBckIsR0FBckIsQ0FBTjtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgbm9kZW1haWxlciA9IHJlcXVpcmUoXCJub2RlbWFpbGVyXCIpO1xuY29uc3QgY29uZmlnID0gcmVxdWlyZShcIi4uL2NvbmZpZy5qc29uXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNlbmRFbWFpbDtcblxuYXN5bmMgZnVuY3Rpb24gc2VuZEVtYWlsKHsgdG8sIHN1YmplY3QsIGh0bWwsIGZyb20gPSBjb25maWdbXCJlbWFpbEZyb21cIl0gfSkge1xuICAgIGNvbnN0IHRyYW5zcG9ydGVyID0gbm9kZW1haWxlci5jcmVhdGVUcmFuc3BvcnQoY29uZmlnW1wic210cE9wdGlvbnNcIl0pO1xuICAgIGF3YWl0IHRyYW5zcG9ydGVyLnNlbmRNYWlsKHsgZnJvbSwgdG8sIHN1YmplY3QsIGh0bWwgfSk7XG59XG4iXX0=", "originalCode": "const nodemailer = require(\"nodemailer\");\nconst config = require(\"../config.json\");\n\nmodule.exports = sendEmail;\n\nasync function sendEmail({ to, subject, html, from = config[\"emailFrom\"] }) {\n const transporter = nodemailer.createTransport(config[\"smtpOptions\"]);\n await transporter.sendMail({ from, to, subject, html });\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/email_4444491566e111edc26f59e95bae5b33.map", "wrapperLength": 89 }, "result": { "scriptId": "2908", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1859, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1856, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "sendEmail", "ranges": [ { "startOffset": 204, "endOffset": 441, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const jwt = require(\"jsonwebtoken\");\n\nconst User = require(\"../api/user/user.model\");\n\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n\n if (req.headers.authorization && req.headers.authorization.startsWith(\"Bearer \")) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\"\n });\n } // verify token and account\n\n\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n const user = await User.query().where({\n id: decodedToken.id\n }).first();\n\n if (!user || roles.length && !roles.includes(decodedToken.role)) {\n // account does not exist or role not authorized\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n } // authentication and authorization successful\n\n\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query().where({\n owner_id: req.user.id,\n id: req.params.company_id\n }).first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImF1dGguanMiXSwibmFtZXMiOlsiand0IiwicmVxdWlyZSIsIlVzZXIiLCJDb21wYW55IiwibW9kdWxlIiwiZXhwb3J0cyIsImF1dGgiLCJpc093bmVyIiwicm9sZXMiLCJyZXEiLCJyZXMiLCJuZXh0IiwidG9rZW4iLCJoZWFkZXJzIiwiYXV0aG9yaXphdGlvbiIsInN0YXJ0c1dpdGgiLCJzcGxpdCIsInN0YXR1cyIsImpzb24iLCJtZXNzYWdlIiwiZGVjb2RlZFRva2VuIiwidmVyaWZ5IiwicHJvY2VzcyIsImVudiIsIkpXVF9TRUNSRVQiLCJ1c2VyIiwicXVlcnkiLCJ3aGVyZSIsImlkIiwiZmlyc3QiLCJsZW5ndGgiLCJpbmNsdWRlcyIsInJvbGUiLCJlcnJvciIsImJvb2wiLCJvd25lcl9pZCIsInBhcmFtcyIsImNvbXBhbnlfaWQiLCJjb25zb2xlIiwibG9nIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxHQUFHLEdBQUdDLE9BQU8sQ0FBQyxjQUFELENBQW5COztBQUNBLE1BQU1DLElBQUksR0FBR0QsT0FBTyxDQUFDLHdCQUFELENBQXBCOztBQUNBLE1BQU1FLE9BQU8sR0FBR0YsT0FBTyxDQUFDLDhCQUFELENBQXZCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsSUFEYTtBQUViQyxFQUFBQTtBQUZhLENBQWpCOztBQUtBLFNBQVNELElBQVQsQ0FBY0UsS0FBSyxHQUFHLEVBQXRCLEVBQTBCO0FBQ3RCLE1BQUksT0FBT0EsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUMzQkEsSUFBQUEsS0FBSyxHQUFHLENBQUNBLEtBQUQsQ0FBUjtBQUNIOztBQUVELFNBQU8sT0FBT0MsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJQyxLQUFKOztBQUNBLFFBQ0lILEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLElBQ0FMLEdBQUcsQ0FBQ0ksT0FBSixDQUFZQyxhQUFaLENBQTBCQyxVQUExQixDQUFxQyxTQUFyQyxDQUZKLEVBR0U7QUFDRUgsTUFBQUEsS0FBSyxHQUFHSCxHQUFHLENBQUNJLE9BQUosQ0FBWUMsYUFBWixDQUEwQkUsS0FBMUIsQ0FBZ0MsU0FBaEMsRUFBMkMsQ0FBM0MsQ0FBUjtBQUNILEtBTEQsTUFLTztBQUNILGFBQU9OLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQ3hCQyxRQUFBQSxPQUFPLEVBQUU7QUFEZSxPQUFyQixDQUFQO0FBR0gsS0FYNEIsQ0FhN0I7OztBQUNBLFFBQUk7QUFDQSxZQUFNQyxZQUFZLEdBQUdwQixHQUFHLENBQUNxQixNQUFKLENBQVdULEtBQVgsRUFBa0JVLE9BQU8sQ0FBQ0MsR0FBUixDQUFZQyxVQUE5QixDQUFyQjtBQUVBLFlBQU1DLElBQUksR0FBRyxNQUFNdkIsSUFBSSxDQUFDd0IsS0FBTCxHQUNkQyxLQURjLENBQ1I7QUFBRUMsUUFBQUEsRUFBRSxFQUFFUixZQUFZLENBQUNRO0FBQW5CLE9BRFEsRUFFZEMsS0FGYyxFQUFuQjs7QUFJQSxVQUFJLENBQUNKLElBQUQsSUFBVWpCLEtBQUssQ0FBQ3NCLE1BQU4sSUFBZ0IsQ0FBQ3RCLEtBQUssQ0FBQ3VCLFFBQU4sQ0FBZVgsWUFBWSxDQUFDWSxJQUE1QixDQUEvQixFQUFtRTtBQUMvRDtBQUNBLGVBQU90QixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQjtBQUFFQyxVQUFBQSxPQUFPLEVBQUU7QUFBWCxTQUFyQixDQUFQO0FBQ0gsT0FWRCxDQVlBOzs7QUFDQVYsTUFBQUEsR0FBRyxDQUFDZ0IsSUFBSixHQUFXTCxZQUFYO0FBQ0FULE1BQUFBLElBQUk7QUFDUCxLQWZELENBZUUsT0FBT3NCLEtBQVAsRUFBYztBQUNadEIsTUFBQUEsSUFBSSxDQUFDc0IsS0FBRCxDQUFKO0FBQ0g7QUFDSixHQWhDRDtBQWlDSDs7QUFFRCxTQUFTMUIsT0FBVCxHQUFtQjtBQUNmLFNBQU8sT0FBT0UsR0FBUCxFQUFZQyxHQUFaLEVBQWlCQyxJQUFqQixLQUEwQjtBQUM3QixRQUFJO0FBQ0EsWUFBTXVCLElBQUksR0FBRyxNQUFNL0IsT0FBTyxDQUFDdUIsS0FBUixHQUNkQyxLQURjLENBQ1I7QUFDSFEsUUFBQUEsUUFBUSxFQUFFMUIsR0FBRyxDQUFDZ0IsSUFBSixDQUFTRyxFQURoQjtBQUVIQSxRQUFBQSxFQUFFLEVBQUVuQixHQUFHLENBQUMyQixNQUFKLENBQVdDO0FBRlosT0FEUSxFQUtkUixLQUxjLEVBQW5COztBQU9BLFVBQUksQ0FBQ0ssSUFBTCxFQUFXO0FBQ1BJLFFBQUFBLE9BQU8sQ0FBQ0MsR0FBUixDQUFZTCxJQUFaO0FBQ0EsZUFBT3hCLEdBQUcsQ0FBQ08sTUFBSixDQUFXLEdBQVgsRUFBZ0JDLElBQWhCLENBQXFCO0FBQUVDLFVBQUFBLE9BQU8sRUFBRTtBQUFYLFNBQXJCLENBQVA7QUFDSDs7QUFDRFIsTUFBQUEsSUFBSTtBQUNQLEtBYkQsQ0FhRSxPQUFPc0IsS0FBUCxFQUFjO0FBQ1p0QixNQUFBQSxJQUFJLENBQUNzQixLQUFELENBQUo7QUFDSDtBQUNKLEdBakJEO0FBa0JIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qgand0ID0gcmVxdWlyZShcImpzb253ZWJ0b2tlblwiKTtcbmNvbnN0IFVzZXIgPSByZXF1aXJlKFwiLi4vYXBpL3VzZXIvdXNlci5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vYXBpL2NvbXBhbnkvY29tcGFueS5tb2RlbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYXV0aCxcbiAgICBpc093bmVyLFxufTtcblxuZnVuY3Rpb24gYXV0aChyb2xlcyA9IFtdKSB7XG4gICAgaWYgKHR5cGVvZiByb2xlcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByb2xlcyA9IFtyb2xlc107XG4gICAgfVxuXG4gICAgcmV0dXJuIGFzeW5jIChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgICAgICBsZXQgdG9rZW47XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24gJiZcbiAgICAgICAgICAgIHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3RhcnRzV2l0aChcIkJlYXJlciBcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0b2tlbiA9IHJlcS5oZWFkZXJzLmF1dGhvcml6YXRpb24uc3BsaXQoXCJCZWFyZXIgXCIpWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAzKS5qc29uKHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIlRva2VuIG5vdCBmb3VuZCwgYWNjZXNzIGRlbmllZFwiLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB2ZXJpZnkgdG9rZW4gYW5kIGFjY291bnRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGRlY29kZWRUb2tlbiA9IGp3dC52ZXJpZnkodG9rZW4sIHByb2Nlc3MuZW52LkpXVF9TRUNSRVQpO1xuXG4gICAgICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgVXNlci5xdWVyeSgpXG4gICAgICAgICAgICAgICAgLndoZXJlKHsgaWQ6IGRlY29kZWRUb2tlbi5pZCB9KVxuICAgICAgICAgICAgICAgIC5maXJzdCgpO1xuXG4gICAgICAgICAgICBpZiAoIXVzZXIgfHwgKHJvbGVzLmxlbmd0aCAmJiAhcm9sZXMuaW5jbHVkZXMoZGVjb2RlZFRva2VuLnJvbGUpKSkge1xuICAgICAgICAgICAgICAgIC8vIGFjY291bnQgZG9lcyBub3QgZXhpc3Qgb3Igcm9sZSBub3QgYXV0aG9yaXplZFxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuc3RhdHVzKDQwMSkuanNvbih7IG1lc3NhZ2U6IFwiVW5hdXRob3JpemVkXCIgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIHN1Y2Nlc3NmdWxcbiAgICAgICAgICAgIHJlcS51c2VyID0gZGVjb2RlZFRva2VuO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgbmV4dChlcnJvcik7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5mdW5jdGlvbiBpc093bmVyKCkge1xuICAgIHJldHVybiBhc3luYyAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGJvb2wgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KClcbiAgICAgICAgICAgICAgICAud2hlcmUoe1xuICAgICAgICAgICAgICAgICAgICBvd25lcl9pZDogcmVxLnVzZXIuaWQsXG4gICAgICAgICAgICAgICAgICAgIGlkOiByZXEucGFyYW1zLmNvbXBhbnlfaWQsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuZmlyc3QoKTtcblxuICAgICAgICAgICAgaWYgKCFib29sKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYm9vbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcy5zdGF0dXMoNDAxKS5qc29uKHsgbWVzc2FnZTogXCJVbmF1dGhvcml6ZWRcIiB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIG5leHQoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbiJdfQ==", "originalCode": "const jwt = require(\"jsonwebtoken\");\nconst User = require(\"../api/user/user.model\");\nconst Company = require(\"../api/company/company.model\");\n\nmodule.exports = {\n auth,\n isOwner,\n};\n\nfunction auth(roles = []) {\n if (typeof roles === \"string\") {\n roles = [roles];\n }\n\n return async (req, res, next) => {\n let token;\n if (\n req.headers.authorization &&\n req.headers.authorization.startsWith(\"Bearer \")\n ) {\n token = req.headers.authorization.split(\"Bearer \")[1];\n } else {\n return res.status(403).json({\n message: \"Token not found, access denied\",\n });\n }\n\n // verify token and account\n try {\n const decodedToken = jwt.verify(token, process.env.JWT_SECRET);\n\n const user = await User.query()\n .where({ id: decodedToken.id })\n .first();\n\n if (!user || (roles.length && !roles.includes(decodedToken.role))) {\n // account does not exist or role not authorized\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n // authentication and authorization successful\n req.user = decodedToken;\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n\nfunction isOwner() {\n return async (req, res, next) => {\n try {\n const bool = await Company.query()\n .where({\n owner_id: req.user.id,\n id: req.params.company_id,\n })\n .first();\n\n if (!bool) {\n console.log(bool);\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n next();\n } catch (error) {\n next(error);\n }\n };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/auth_bef81972d508eee6f0010ea0d7e5ae1e.map", "wrapperLength": 89 }, "result": { "scriptId": "2942", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7428, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7425, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "auth", "ranges": [ { "startOffset": 275, "endOffset": 1253, "count": 26 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 373, "endOffset": 1250, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "isOwner", "ranges": [ { "startOffset": 1255, "endOffset": 1662, "count": 11 } ], "isBlockCoverage": false }, { "functionName": "", "ranges": [ { "startOffset": 1285, "endOffset": 1659, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../constants/tableNames\");\n\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n\n const Account = require(\"./accounts/accounts.model\");\n\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`\n }\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`\n }\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`\n }\n }\n };\n }\n\n}\n\nmodule.exports = Company;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsInNjaGVtYSIsIkNvbXBhbnkiLCJ0YWJsZU5hbWUiLCJjb21wYW55IiwianNvblNjaGVtYSIsInJlbGF0aW9uTWFwcGluZ3MiLCJVc2VyIiwiQWNjb3VudCIsIk1lbnUiLCJvd25lciIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsInVzZXIiLCJhY2NvdW50cyIsIkhhc01hbnlSZWxhdGlvbiIsIm1lbnVzIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU07QUFBRUEsRUFBQUE7QUFBRixJQUFZQyxPQUFPLENBQUMsV0FBRCxDQUF6Qjs7QUFDQSxNQUFNQyxVQUFVLEdBQUdELE9BQU8sQ0FBQyw0QkFBRCxDQUExQjs7QUFDQSxNQUFNRSxNQUFNLEdBQUdGLE9BQU8sQ0FBQyx1QkFBRCxDQUF0Qjs7QUFFQSxNQUFNRyxPQUFOLFNBQXNCSixLQUF0QixDQUE0QjtBQUN4QixhQUFXSyxTQUFYLEdBQXVCO0FBQ25CLFdBQU9ILFVBQVUsQ0FBQ0ksT0FBbEI7QUFDSDs7QUFFRCxhQUFXQyxVQUFYLEdBQXdCO0FBQ3BCLFdBQU9KLE1BQVA7QUFDSDs7QUFFRCxhQUFXSyxnQkFBWCxHQUE4QjtBQUMxQjtBQUNBLFVBQU1DLElBQUksR0FBR1IsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLFVBQU1TLE9BQU8sR0FBR1QsT0FBTyxDQUFDLDJCQUFELENBQXZCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsS0FBSyxFQUFFO0FBQ0hDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEYjtBQUVIQyxRQUFBQSxVQUFVLEVBQUVOLElBRlQ7QUFHSE8sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFZixVQUFVLENBQUNJLE9BQVEsV0FEMUI7QUFFRlksVUFBQUEsRUFBRSxFQUFHLEdBQUVoQixVQUFVLENBQUNpQixJQUFLO0FBRnJCO0FBSEgsT0FESjtBQVNIQyxNQUFBQSxRQUFRLEVBQUU7QUFDTlAsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURWO0FBRU5OLFFBQUFBLFVBQVUsRUFBRUwsT0FGTjtBQUdOTSxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ2tCLFFBQVM7QUFGekI7QUFIQSxPQVRQO0FBaUJIRSxNQUFBQSxLQUFLLEVBQUU7QUFDSFQsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNxQixlQURiO0FBRUhOLFFBQUFBLFVBQVUsRUFBRUosSUFGVDtBQUdISyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVmLFVBQVUsQ0FBQ0ksT0FBUSxLQUQxQjtBQUVGWSxVQUFBQSxFQUFFLEVBQUcsR0FBRWhCLFVBQVUsQ0FBQ3FCLElBQUs7QUFGckI7QUFISDtBQWpCSixLQUFQO0FBMEJIOztBQXpDdUI7O0FBNEM1QkMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCckIsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkuc2NoZW1hLmpzb25cIik7XG5cbmNsYXNzIENvbXBhbnkgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLmNvbXBhbnk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBVc2VyID0gcmVxdWlyZShcIi4uL3VzZXIvdXNlci5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgQWNjb3VudCA9IHJlcXVpcmUoXCIuL2FjY291bnRzL2FjY291bnRzLm1vZGVsXCIpO1xuICAgICAgICBjb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51Lm1vZGVsXCIpO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvd25lcjoge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBVc2VyLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5vd25lcl9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLnVzZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGFjY291bnRzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBBY2NvdW50LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmFjY291bnRzfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG1lbnVzOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jb21wYW55fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmNvbXBhbnlfaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDb21wYW55O1xuIl19", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../constants/tableNames\");\nconst schema = require(\"./company.schema.json\");\n\nclass Company extends Model {\n static get tableName() {\n return tableNames.company;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const User = require(\"../user/user.model\");\n const Account = require(\"./accounts/accounts.model\");\n const Menu = require(\"./menu/menu.model\");\n\n return {\n owner: {\n relation: Model.BelongsToOneRelation,\n modelClass: User,\n join: {\n from: `${tableNames.company}.owner_id`,\n to: `${tableNames.user}.id`,\n },\n },\n accounts: {\n relation: Model.HasManyRelation,\n modelClass: Account,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.accounts}.company_id`,\n },\n },\n menus: {\n relation: Model.HasManyRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.company}.id`,\n to: `${tableNames.menu}.company_id`,\n },\n },\n };\n }\n}\n\nmodule.exports = Company;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/companymodel_8b713279ce3af8b604431fcbf24964b4.map", "wrapperLength": 89 }, "result": { "scriptId": "2943", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 5514, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 5511, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Company", "ranges": [ { "startOffset": 241, "endOffset": 241, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 280, "endOffset": 332, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 343, "endOffset": 384, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 395, "endOffset": 1298, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\"\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJvbGUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImFkbWluIiwib3duZXIiLCJjdXN0b21lciIsInN0YWZmIl0sIm1hcHBpbmdzIjoiQUFBQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLEtBQUssRUFBRSxPQURNO0FBRWJDLEVBQUFBLEtBQUssRUFBRSxPQUZNO0FBR2JDLEVBQUFBLFFBQVEsRUFBRSxVQUhHO0FBSWJDLEVBQUFBLEtBQUssRUFBRTtBQUpNLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgYWRtaW46IFwiYWRtaW5cIixcbiAgICBvd25lcjogXCJvd25lclwiLFxuICAgIGN1c3RvbWVyOiBcImN1c3RvbWVyXCIsXG4gICAgc3RhZmY6IFwic3RhZmZcIixcbn07XG4iXX0=", "originalCode": "module.exports = {\n admin: \"admin\",\n owner: \"owner\",\n customer: \"customer\",\n staff: \"staff\",\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c3/role_c386996d0c7428ed82a7fa0a3ec37236.map", "wrapperLength": 89 }, "result": { "scriptId": "2944", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 789, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 786, "count": 1 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./company.validators\");\n\nconst companyService = require(\"./company.service\");\n\nconst {\n auth: Auth\n} = require(\"../../_middlewares/auth\");\n\nconst Role = require(\"../../utils/role\");\n\nconst {\n scopedItems\n} = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\n\nconst Menu = require(\"./menu/menu.routes\");\n\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/1/accounts\n\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService.create(req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService.getAllCompanies().then(companies => {\n res.json(scopedItems(req.user, companies));\n }).catch(next);\n}\n\nfunction getMyCompanies(req, res, next) {\n companyService.getMyCompanies(req.user.id).then(companies => companies ? res.json(companies) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService.getCompanyById(req.params.id).then(company => {\n if (company.owner_id !== req.user.id && req.user.role !== Role.admin) {\n return res.status(401).json({\n message: \"Unauthorized\"\n });\n }\n\n res.json(company);\n }).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService.updateCompany({\n id: req.params.id,\n owner_id: req.user.id\n }, req.body).then(company => res.json(company)).catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService._delete({\n id: parseInt(req.params.id),\n owner_id: req.user.id\n }).then(() => {\n res.json({\n id: parseInt(req.params.id)\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiY29tcGFueVNlcnZpY2UiLCJhdXRoIiwiQXV0aCIsIlJvbGUiLCJzY29wZWRJdGVtcyIsIkFjY291bnQiLCJNZW51IiwiT3JkZXIiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsInBhdGNoIiwidXBkYXRlIiwiZ2V0IiwiYWRtaW4iLCJnZXRBbGxDb21wYW5pZXMiLCJnZXRNeUNvbXBhbmllcyIsImdldENvbXBhbnlCeUlkIiwiZGVsZXRlIiwiX2RlbGV0ZUNvbXBhbnkiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJvd25lcl9pZCIsInVzZXIiLCJpZCIsInRoZW4iLCJjb21wYW55IiwianNvbiIsImNhdGNoIiwiY29tcGFuaWVzIiwic2VuZFN0YXR1cyIsInBhcmFtcyIsInJvbGUiLCJzdGF0dXMiLCJtZXNzYWdlIiwidXBkYXRlQ29tcGFueSIsIl9kZWxldGUiLCJwYXJzZUludCJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsT0FBTyxHQUFHQyxPQUFPLENBQUMsU0FBRCxDQUF2Qjs7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFlBQUY7QUFBZ0JDLEVBQUFBO0FBQWhCLElBQWlDRixPQUFPLENBQUMsc0JBQUQsQ0FBOUM7O0FBQ0EsTUFBTUcsY0FBYyxHQUFHSCxPQUFPLENBQUMsbUJBQUQsQ0FBOUI7O0FBQ0EsTUFBTTtBQUFFSSxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJMLE9BQU8sQ0FBQyx5QkFBRCxDQUE5Qjs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxrQkFBRCxDQUFwQjs7QUFDQSxNQUFNO0FBQUVPLEVBQUFBO0FBQUYsSUFBa0JQLE9BQU8sQ0FBQyx5QkFBRCxDQUEvQjs7QUFF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QURMLENBQ2E7QUFBRVosSUFBQUEsRUFBRSxFQUFFYSxRQUFRLENBQUNuQixHQUFHLENBQUNhLE1BQUosQ0FBV1AsRUFBWixDQUFkO0FBQStCRixJQUFBQSxRQUFRLEVBQUVKLEdBQUcsQ0FBQ0ssSUFBSixDQUFTQztBQUFsRCxHQURiLEVBRUtDLElBRkwsQ0FFVSxNQUFNO0FBQ1JOLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVILE1BQUFBLEVBQUUsRUFBRWEsUUFBUSxDQUFDbkIsR0FBRyxDQUFDYSxNQUFKLENBQVdQLEVBQVo7QUFBZCxLQUFUO0FBQ0gsR0FKTCxFQUtLSSxLQUxMLENBS1dSLElBTFg7QUFNSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGV4cHJlc3MgPSByZXF1aXJlKFwiZXhwcmVzc1wiKTtcbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NvbXBhbnkudmFsaWRhdG9yc1wiKTtcbmNvbnN0IGNvbXBhbnlTZXJ2aWNlID0gcmVxdWlyZShcIi4vY29tcGFueS5zZXJ2aWNlXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCB7IHNjb3BlZEl0ZW1zIH0gPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvcGVybWlzc2lvbnNcIik7XG5cbmNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy9hY2NvdW50cy5yb3V0ZXNcIik7XG5jb25zdCBNZW51ID0gcmVxdWlyZShcIi4vbWVudS9tZW51LnJvdXRlc1wiKTtcbmNvbnN0IE9yZGVyID0gcmVxdWlyZShcIi4vb3JkZXIvb3JkZXIucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxuLy8gYXBpL3YxL2NvbXBhbnkvMS9hY2NvdW50c1xucm91dGVyLnVzZShcIi86Y29tcGFueV9pZC9hY2NvdW50c1wiLCBBY2NvdW50KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvbWVudVwiLCBNZW51KTtcbnJvdXRlci51c2UoXCIvOmNvbXBhbnlfaWQvb3JkZXJcIiwgT3JkZXIpO1xuXG5yb3V0ZXIucG9zdChcIi9cIiwgQXV0aChbUm9sZS5vd25lcl0pLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgdXBkYXRlU2NoZW1hLCB1cGRhdGUpO1xucm91dGVyLmdldChcIi9cIiwgQXV0aChbUm9sZS5hZG1pbl0pLCBnZXRBbGxDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi9taW5lXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgZ2V0TXlDb21wYW5pZXMpO1xucm91dGVyLmdldChcIi86aWRcIiwgQXV0aChbUm9sZS5hZG1pbiwgUm9sZS5vd25lcl0pLCBnZXRDb21wYW55QnlJZCk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLmFkbWluLCBSb2xlLm93bmVyXSksIF9kZWxldGVDb21wYW55KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlcS5ib2R5Lm93bmVyX2lkID0gcmVxLnVzZXIuaWQ7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbmllcyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC5nZXRBbGxDb21wYW5pZXMoKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbihzY29wZWRJdGVtcyhyZXEudXNlciwgY29tcGFuaWVzKSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbmZ1bmN0aW9uIGdldE15Q29tcGFuaWVzKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldE15Q29tcGFuaWVzKHJlcS51c2VyLmlkKVxuICAgICAgICAudGhlbigoY29tcGFuaWVzKSA9PlxuICAgICAgICAgICAgY29tcGFuaWVzID8gcmVzLmpzb24oY29tcGFuaWVzKSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5mdW5jdGlvbiBnZXRDb21wYW55QnlJZChyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG93bmVyIGNhbiBnZXQgaGlzIGNvbXBhbnkgYW5kIHRoZSBhZG1pbiBjYW4gZ2V0IGFueSBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLmdldENvbXBhbnlCeUlkKHJlcS5wYXJhbXMuaWQpXG4gICAgICAgIC50aGVuKChjb21wYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgY29tcGFueS5vd25lcl9pZCAhPT0gcmVxLnVzZXIuaWQgJiZcbiAgICAgICAgICAgICAgICByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXMuanNvbihjb21wYW55KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueVxuICAgIGNvbXBhbnlTZXJ2aWNlXG4gICAgICAgIC51cGRhdGVDb21wYW55KHsgaWQ6IHJlcS5wYXJhbXMuaWQsIG93bmVyX2lkOiByZXEudXNlci5pZCB9LCByZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGNvbXBhbnkpID0+IHJlcy5qc29uKGNvbXBhbnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIF9kZWxldGVDb21wYW55KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55XG4gICAgY29tcGFueVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoeyBpZDogcGFyc2VJbnQocmVxLnBhcmFtcy5pZCksIG93bmVyX2lkOiByZXEudXNlci5pZCB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkOiBwYXJzZUludChyZXEucGFyYW1zLmlkKSB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./company.validators\");\nconst companyService = require(\"./company.service\");\nconst { auth: Auth } = require(\"../../_middlewares/auth\");\nconst Role = require(\"../../utils/role\");\nconst { scopedItems } = require(\"../../utils/permissions\");\n\nconst Account = require(\"./accounts/accounts.routes\");\nconst Menu = require(\"./menu/menu.routes\");\nconst Order = require(\"./order/order.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/1/accounts\nrouter.use(\"/:company_id/accounts\", Account);\nrouter.use(\"/:company_id/menu\", Menu);\nrouter.use(\"/:company_id/order\", Order);\n\nrouter.post(\"/\", Auth([Role.owner]), createSchema, create);\nrouter.patch(\"/:id\", Auth([Role.owner]), updateSchema, update);\nrouter.get(\"/\", Auth([Role.admin]), getAllCompanies);\nrouter.get(\"/mine\", Auth([Role.owner]), getMyCompanies);\nrouter.get(\"/:id\", Auth([Role.admin, Role.owner]), getCompanyById);\nrouter.delete(\"/:id\", Auth([Role.admin, Role.owner]), _deleteCompany);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.owner_id = req.user.id;\n companyService\n .create(req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction getAllCompanies(req, res, next) {\n companyService\n .getAllCompanies()\n .then((companies) => {\n res.json(scopedItems(req.user, companies));\n })\n .catch(next);\n}\nfunction getMyCompanies(req, res, next) {\n companyService\n .getMyCompanies(req.user.id)\n .then((companies) =>\n companies ? res.json(companies) : res.sendStatus(404)\n )\n .catch(next);\n}\nfunction getCompanyById(req, res, next) {\n // owner can get his company and the admin can get any company\n companyService\n .getCompanyById(req.params.id)\n .then((company) => {\n if (\n company.owner_id !== req.user.id &&\n req.user.role !== Role.admin\n ) {\n return res.status(401).json({ message: \"Unauthorized\" });\n }\n\n res.json(company);\n })\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company\n companyService\n .updateCompany({ id: req.params.id, owner_id: req.user.id }, req.body)\n .then((company) => res.json(company))\n .catch(next);\n}\n\nfunction _deleteCompany(req, res, next) {\n // only owner delete can delete their company\n companyService\n ._delete({ id: parseInt(req.params.id), owner_id: req.user.id })\n .then(() => {\n res.json({ id: parseInt(req.params.id) });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/2a/companyroutes_2accae81b914ebc49b8ad824faf130cd.map", "wrapperLength": 89 }, "result": { "scriptId": "2945", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 11663, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 11660, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1186, "endOffset": 1338, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1340, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1507, "endOffset": 1681, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1683, "endOffset": 2058, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 2060, "endOffset": 2281, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCompany", "ranges": [ { "startOffset": 2283, "endOffset": 2553, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkudmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJkZXNjcmlwdGlvbiIsImxvZ29fdXJsIiwid2Vic2l0ZV91cmwiLCJlbWFpbCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiLCJvd25lciIsIm51bWJlciJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyxvQ0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsUUFBUSxFQUFFZCxHQUFHLENBQUNXLE1BQUosRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosRUFKUztBQUt0QkssSUFBQUEsS0FBSyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFLLEtBQWIsR0FBcUJKLFFBQXJCO0FBTGUsR0FBWCxDQUFmO0FBT0FWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQ7O0FBV0FMLE9BQU8sQ0FBQ2MsWUFBUixHQUF1QixDQUFDWixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNVyxXQUFXLEdBQUc7QUFDaEJSLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQk4sSUFBQUEsV0FBVyxFQUFFYixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQixDQUZHO0FBR2hCSCxJQUFBQSxLQUFLLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYUssS0FBYixHQUFxQkcsS0FBckIsQ0FBMkIsRUFBM0IsQ0FIUztBQUloQkMsSUFBQUEsS0FBSyxFQUFFcEIsR0FBRyxDQUFDcUIsTUFBSixHQUFhRixLQUFiLENBQW1CLEVBQW5CLENBSlM7QUFLaEJMLElBQUFBLFFBQVEsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFRLEtBQWIsQ0FBbUIsRUFBbkIsQ0FMTTtBQU1oQkosSUFBQUEsV0FBVyxFQUFFZixHQUFHLENBQUNXLE1BQUosR0FBYVEsS0FBYixDQUFtQixFQUFuQjtBQU5HLEdBQXBCO0FBU0EsUUFBTVgsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV1MsV0FBWCxDQUFmO0FBRUFoQixFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQWJEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBsb2dvX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICB3ZWJzaXRlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBlbWFpbDogSm9pLnN0cmluZygpLmVtYWlsKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIG93bmVyOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIGxvZ29fdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHdlYnNpdGVfdXJsOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n logo_url: Joi.string(),\n website_url: Joi.string(),\n email: Joi.string().email().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n email: Joi.string().email().empty(\"\"),\n owner: Joi.number().empty(\"\"),\n logo_url: Joi.string().empty(\"\"),\n website_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3c/companyvalidators_3ce01f397e22205413767a4933ebdfd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2946", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4153, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4150, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 213, "endOffset": 489, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 515, "endOffset": 878, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Company = require(\"../company/company.model\");\n\nconst error = require(\"../../utils/error\");\n\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({\n name: params.name\n })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams\n });\n\n if (!company) {\n error(\"Unauthorized\");\n } // validate if name was changed\n\n\n if (params.name && company.name !== params.name && (await getCompany({\n name: params.name\n }))) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(queryParams.id, { ...params\n });\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({\n id\n });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query().delete().where({ ...queryParams\n });\n }\n\n return error(\"Forbidden\");\n} // async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getCompany(param) {\n const company = await Company.query().where({ ...param\n }).first();\n return company;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBhbnkuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJDb21wYW55IiwicmVxdWlyZSIsImVycm9yIiwiY3JlYXRlRXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlIiwidXBkYXRlQ29tcGFueSIsImdldEFsbENvbXBhbmllcyIsImdldE15Q29tcGFuaWVzIiwiZ2V0Q29tcGFueUJ5SWQiLCJfZGVsZXRlIiwicGFyYW1zIiwiZ2V0Q29tcGFueSIsIm5hbWUiLCJjb21wYW55IiwicXVlcnkiLCJpbnNlcnQiLCJxdWVyeVBhcmFtcyIsInVwZGF0ZWRDb21wYW55IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJpZCIsImNvbXBhbmllcyIsIm93bmVySWQiLCJ3aGVyZSIsIm93bmVyX2lkIiwidG9iZURlbGV0ZWQiLCJkZWxldGUiLCJwYXJhbSIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQywwQkFBRCxDQUF2Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyxtQkFBRCxDQUFyQjs7QUFDQSxNQUFNRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxhQUFELENBQTNCOztBQUVBRyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsTUFEYTtBQUViQyxFQUFBQSxhQUZhO0FBR2JDLEVBQUFBLGVBSGE7QUFJYkMsRUFBQUEsY0FKYTtBQUtiQyxFQUFBQSxjQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsTUFBZixDQUFzQk0sTUFBdEIsRUFBOEI7QUFDMUI7QUFDQSxNQUFJLE1BQU1DLFVBQVUsQ0FBQztBQUFFQyxJQUFBQSxJQUFJLEVBQUVGLE1BQU0sQ0FBQ0U7QUFBZixHQUFELENBQXBCLEVBQTZDO0FBQ3pDWixJQUFBQSxLQUFLLENBQUMsV0FBV1UsTUFBTSxDQUFDRSxJQUFsQixHQUF5Qix5QkFBMUIsQ0FBTDtBQUNIOztBQUVELFFBQU1DLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQWdCQyxNQUFoQixDQUF1QkwsTUFBdkIsQ0FBdEI7QUFDQSxTQUFPRyxPQUFQO0FBQ0g7O0FBRUQsZUFBZVIsYUFBZixDQUE2QlcsV0FBN0IsRUFBMENOLE1BQTFDLEVBQWtEO0FBQzlDLFFBQU1HLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUMsRUFBRSxHQUFHSztBQUFMLEdBQUQsQ0FBaEM7O0FBRUEsTUFBSSxDQUFDSCxPQUFMLEVBQWM7QUFDVmIsSUFBQUEsS0FBSyxDQUFDLGNBQUQsQ0FBTDtBQUNILEdBTDZDLENBTzlDOzs7QUFDQSxNQUNJVSxNQUFNLENBQUNFLElBQVAsSUFDQUMsT0FBTyxDQUFDRCxJQUFSLEtBQWlCRixNQUFNLENBQUNFLElBRHhCLEtBRUMsTUFBTUQsVUFBVSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRUYsTUFBTSxDQUFDRTtBQUFmLEdBQUQsQ0FGakIsQ0FESixFQUlFO0FBQ0VaLElBQUFBLEtBQUssQ0FBRSxRQUFPVSxNQUFNLENBQUNFLElBQUssbUJBQXJCLENBQUw7QUFDSDs7QUFFRCxRQUFNSyxjQUFjLEdBQUcsTUFBTW5CLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JJLGlCQUFoQixDQUN6QkYsV0FBVyxDQUFDRyxFQURhLEVBRXpCLEVBQ0ksR0FBR1Q7QUFEUCxHQUZ5QixDQUE3QjtBQU9BLFNBQU9PLGNBQVA7QUFDSDs7QUFFRCxlQUFlWCxlQUFmLEdBQWlDO0FBQzdCLFFBQU1jLFNBQVMsR0FBRyxNQUFNdEIsT0FBTyxDQUFDZ0IsS0FBUixFQUF4QjtBQUNBLFNBQU9NLFNBQVA7QUFDSDs7QUFFRCxlQUFlYixjQUFmLENBQThCYyxPQUE5QixFQUF1QztBQUNuQyxRQUFNRCxTQUFTLEdBQUcsTUFBTXRCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FBZ0JRLEtBQWhCLENBQXNCO0FBQzFDQyxJQUFBQSxRQUFRLEVBQUVGO0FBRGdDLEdBQXRCLENBQXhCO0FBR0EsU0FBT0QsU0FBUDtBQUNIOztBQUVELGVBQWVaLGNBQWYsQ0FBOEJXLEVBQTlCLEVBQWtDO0FBQzlCLFFBQU1OLE9BQU8sR0FBRyxNQUFNRixVQUFVLENBQUM7QUFBRVEsSUFBQUE7QUFBRixHQUFELENBQWhDO0FBQ0EsU0FBT04sT0FBUDtBQUNIOztBQUVELGVBQWVKLE9BQWYsQ0FBdUJPLFdBQXZCLEVBQW9DO0FBQ2hDLFFBQU1RLFdBQVcsR0FBRyxNQUFNYixVQUFVLENBQUNLLFdBQUQsQ0FBcEM7O0FBRUEsTUFBSVEsV0FBSixFQUFpQjtBQUNiLFdBQU8sTUFBTTFCLE9BQU8sQ0FBQ2dCLEtBQVIsR0FDUlcsTUFEUSxHQUVSSCxLQUZRLENBRUYsRUFBRSxHQUFHTjtBQUFMLEtBRkUsQ0FBYjtBQUdIOztBQUVELFNBQU9oQixLQUFLLENBQUMsV0FBRCxDQUFaO0FBQ0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVXLFVBQWYsQ0FBMEJlLEtBQTFCLEVBQWlDO0FBQzdCLFFBQU1iLE9BQU8sR0FBRyxNQUFNZixPQUFPLENBQUNnQixLQUFSLEdBQ2pCUSxLQURpQixDQUNYLEVBQUUsR0FBR0k7QUFBTCxHQURXLEVBRWpCQyxLQUZpQixFQUF0QjtBQUdBLFNBQU9kLE9BQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS9jb21wYW55Lm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5jb25zdCBjcmVhdGVFcnJvciA9IHJlcXVpcmUoXCJodHRwLWVycm9yc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgY3JlYXRlLFxuICAgIHVwZGF0ZUNvbXBhbnksXG4gICAgZ2V0QWxsQ29tcGFuaWVzLFxuICAgIGdldE15Q29tcGFuaWVzLFxuICAgIGdldENvbXBhbnlCeUlkLFxuICAgIF9kZWxldGUsXG59O1xuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGUocGFyYW1zKSB7XG4gICAgLy8gdmFsaWRhdGUgaWYgY29tcGFueSBuYW1lIGV4aXN0c1xuICAgIGlmIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpIHtcbiAgICAgICAgZXJyb3IoJ05hbWUgXCInICsgcGFyYW1zLm5hbWUgKyAnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ29tcGFueShxdWVyeVBhcmFtcywgcGFyYW1zKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyAuLi5xdWVyeVBhcmFtcyB9KTtcblxuICAgIGlmICghY29tcGFueSkge1xuICAgICAgICBlcnJvcihcIlVuYXV0aG9yaXplZFwiKTtcbiAgICB9XG5cbiAgICAvLyB2YWxpZGF0ZSBpZiBuYW1lIHdhcyBjaGFuZ2VkXG4gICAgaWYgKFxuICAgICAgICBwYXJhbXMubmFtZSAmJlxuICAgICAgICBjb21wYW55Lm5hbWUgIT09IHBhcmFtcy5uYW1lICYmXG4gICAgICAgIChhd2FpdCBnZXRDb21wYW55KHsgbmFtZTogcGFyYW1zLm5hbWUgfSkpXG4gICAgKSB7XG4gICAgICAgIGVycm9yKGBOYW1lICR7cGFyYW1zLm5hbWV9IGlzIGFscmVhZHkgdGFrZW5gKTtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ29tcGFueSA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChcbiAgICAgICAgcXVlcnlQYXJhbXMuaWQsXG4gICAgICAgIHtcbiAgICAgICAgICAgIC4uLnBhcmFtcyxcbiAgICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbXBhbnk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbmllcygpIHtcbiAgICBjb25zdCBjb21wYW5pZXMgPSBhd2FpdCBDb21wYW55LnF1ZXJ5KCk7XG4gICAgcmV0dXJuIGNvbXBhbmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TXlDb21wYW5pZXMob3duZXJJZCkge1xuICAgIGNvbnN0IGNvbXBhbmllcyA9IGF3YWl0IENvbXBhbnkucXVlcnkoKS53aGVyZSh7XG4gICAgICAgIG93bmVyX2lkOiBvd25lcklkLFxuICAgIH0pO1xuICAgIHJldHVybiBjb21wYW5pZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnlCeUlkKGlkKSB7XG4gICAgY29uc3QgY29tcGFueSA9IGF3YWl0IGdldENvbXBhbnkoeyBpZCB9KTtcbiAgICByZXR1cm4gY29tcGFueTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGNvbnN0IHRvYmVEZWxldGVkID0gYXdhaXQgZ2V0Q29tcGFueShxdWVyeVBhcmFtcyk7XG5cbiAgICBpZiAodG9iZURlbGV0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IENvbXBhbnkucXVlcnkoKVxuICAgICAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3IoXCJGb3JiaWRkZW5cIik7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBDb21wYW55LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvbXBhbnkocGFyYW0pIHtcbiAgICBjb25zdCBjb21wYW55ID0gYXdhaXQgQ29tcGFueS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC5maXJzdCgpO1xuICAgIHJldHVybiBjb21wYW55O1xufVxuIl19", "originalCode": "const Company = require(\"../company/company.model\");\nconst error = require(\"../../utils/error\");\nconst createError = require(\"http-errors\");\n\nmodule.exports = {\n create,\n updateCompany,\n getAllCompanies,\n getMyCompanies,\n getCompanyById,\n _delete,\n};\n\nasync function create(params) {\n // validate if company name exists\n if (await getCompany({ name: params.name })) {\n error('Name \"' + params.name + '\" is already registered');\n }\n\n const company = await Company.query().insert(params);\n return company;\n}\n\nasync function updateCompany(queryParams, params) {\n const company = await getCompany({ ...queryParams });\n\n if (!company) {\n error(\"Unauthorized\");\n }\n\n // validate if name was changed\n if (\n params.name &&\n company.name !== params.name &&\n (await getCompany({ name: params.name }))\n ) {\n error(`Name ${params.name} is already taken`);\n }\n\n const updatedCompany = await Company.query().patchAndFetchById(\n queryParams.id,\n {\n ...params,\n }\n );\n\n return updatedCompany;\n}\n\nasync function getAllCompanies() {\n const companies = await Company.query();\n return companies;\n}\n\nasync function getMyCompanies(ownerId) {\n const companies = await Company.query().where({\n owner_id: ownerId,\n });\n return companies;\n}\n\nasync function getCompanyById(id) {\n const company = await getCompany({ id });\n return company;\n}\n\nasync function _delete(queryParams) {\n const tobeDeleted = await getCompany(queryParams);\n\n if (tobeDeleted) {\n return await Company.query()\n .delete()\n .where({ ...queryParams });\n }\n\n return error(\"Forbidden\");\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await Company.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getCompany(param) {\n const company = await Company.query()\n .where({ ...param })\n .first();\n return company;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/10/companyservice_103976749abb46712c9f5147304425bb.map", "wrapperLength": 89 }, "result": { "scriptId": "2947", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7967, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7964, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 348, "endOffset": 615, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCompany", "ranges": [ { "startOffset": 617, "endOffset": 1096, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanies", "ranges": [ { "startOffset": 1098, "endOffset": 1197, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMyCompanies", "ranges": [ { "startOffset": 1199, "endOffset": 1339, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyById", "ranges": [ { "startOffset": 1341, "endOffset": 1446, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1448, "endOffset": 1669, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompany", "ranges": [ { "startOffset": 1808, "endOffset": 1933, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "module.exports = message => {\n const error = new Error(message);\n throw error;\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImVycm9yLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJtZXNzYWdlIiwiZXJyb3IiLCJFcnJvciJdLCJtYXBwaW5ncyI6IkFBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFrQkMsT0FBRCxJQUFhO0FBQzFCLFFBQU1DLEtBQUssR0FBRyxJQUFJQyxLQUFKLENBQVVGLE9BQVYsQ0FBZDtBQUNBLFFBQU1DLEtBQU47QUFDSCxDQUhEIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSAobWVzc2FnZSkgPT4ge1xuICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIHRocm93IGVycm9yO1xufTtcbiJdfQ==", "originalCode": "module.exports = (message) => {\n const error = new Error(message);\n throw error;\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fa/error_fa67f28dedb39797d87045fcac49c533.map", "wrapperLength": 89 }, "result": { "scriptId": "2948", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 690, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 687, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.module.exports", "ranges": [ { "startOffset": 106, "endOffset": 171, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter(item => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBlcm1pc3Npb25zLmpzIl0sIm5hbWVzIjpbInJvbGUiLCJyZXF1aXJlIiwic2NvcGVkSXRlbXMiLCJ1c2VyIiwiaXRlbXMiLCJhZG1pbiIsImZpbHRlciIsIml0ZW0iLCJvd25lcl9pZCIsImlkIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsUUFBRCxDQUFwQjs7QUFFQSxTQUFTQyxXQUFULENBQXFCQyxJQUFyQixFQUEyQkMsS0FBM0IsRUFBa0M7QUFDOUIsTUFBSUQsSUFBSSxDQUFDSCxJQUFMLElBQWFBLElBQUksQ0FBQ0ssS0FBdEIsRUFBNkIsT0FBT0QsS0FBUDtBQUM3QixTQUFPQSxLQUFLLENBQUNFLE1BQU4sQ0FBY0MsSUFBRCxJQUFVQSxJQUFJLENBQUNDLFFBQUwsSUFBaUJMLElBQUksQ0FBQ00sRUFBN0MsQ0FBUDtBQUNIOztBQUVEQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYlQsRUFBQUE7QUFEYSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHJvbGUgPSByZXF1aXJlKFwiLi9yb2xlXCIpO1xuXG5mdW5jdGlvbiBzY29wZWRJdGVtcyh1c2VyLCBpdGVtcykge1xuICAgIGlmICh1c2VyLnJvbGUgPT0gcm9sZS5hZG1pbikgcmV0dXJuIGl0ZW1zO1xuICAgIHJldHVybiBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0ub3duZXJfaWQgPT0gdXNlci5pZCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIHNjb3BlZEl0ZW1zLFxufTtcbiJdfQ==", "originalCode": "const role = require(\"./role\");\n\nfunction scopedItems(user, items) {\n if (user.role == role.admin) return items;\n return items.filter((item) => item.owner_id == user.id);\n}\n\nmodule.exports = {\n scopedItems,\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/permissions_089e905c4105820f9841c9d528f11f86.map", "wrapperLength": 89 }, "result": { "scriptId": "2951", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1344, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1341, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "scopedItems", "ranges": [ { "startOffset": 122, "endOffset": 261, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Account = require(\"./accounts.model\");\n\nconst Company = require(\"../company.model\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n const accounts = await Account.query().where({\n company_id: req.params.company_id\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJBY2NvdW50IiwicmVxdWlyZSIsIkNvbXBhbnkiLCJSb2xlIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJnZXQiLCJhZG1pbiIsIm93bmVyIiwiZ2V0QWNjb3VudHMiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImFjY291bnRzIiwicXVlcnkiLCJ3aGVyZSIsImNvbXBhbnlfaWQiLCJwYXJhbXMiLCJzdGF0dXMiLCJqc29uIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1DLE9BQU8sR0FBR0QsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUNBLE1BQU1FLElBQUksR0FBR0YsT0FBTyxDQUFDLHFCQUFELENBQXBCOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFFQSxNQUFNTSxNQUFNLEdBQUdOLE9BQU8sQ0FBQyxTQUFELENBQVAsQ0FBbUJPLE1BQW5CLENBQTBCO0FBQ3JDQyxFQUFBQSxXQUFXLEVBQUU7QUFEd0IsQ0FBMUIsQ0FBZjs7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQkwsSUFBSSxDQUFDLENBQUNGLElBQUksQ0FBQ1EsS0FBTixFQUFhUixJQUFJLENBQUNTLEtBQWxCLENBQUQsQ0FBcEIsRUFBZ0ROLE9BQU8sRUFBdkQsRUFBMkRPLFdBQTNEO0FBRUFDLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQlIsTUFBakI7O0FBRUEsZUFBZU0sV0FBZixDQUEyQkcsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDQyxJQUFyQyxFQUEyQztBQUN2QyxNQUFJO0FBQ0E7QUFDQTtBQUNBO0FBRUEsVUFBTUMsUUFBUSxHQUFHLE1BQU1uQixPQUFPLENBQUNvQixLQUFSLEdBQWdCQyxLQUFoQixDQUFzQjtBQUN6Q0MsTUFBQUEsVUFBVSxFQUFFTixHQUFHLENBQUNPLE1BQUosQ0FBV0Q7QUFEa0IsS0FBdEIsQ0FBdkI7O0FBSUEsUUFBSSxDQUFDSCxRQUFMLEVBQWU7QUFDWCxhQUFPRixHQUFHLENBQUNPLE1BQUosQ0FBVyxHQUFYLENBQVA7QUFDSDs7QUFFRFAsSUFBQUEsR0FBRyxDQUFDUSxJQUFKLENBQVNOLFFBQVQ7QUFDSCxHQWRELENBY0UsT0FBT08sS0FBUCxFQUFjO0FBQ1pSLElBQUFBLElBQUksQ0FBQ1EsS0FBRCxDQUFKO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFjY291bnQgPSByZXF1aXJlKFwiLi9hY2NvdW50cy5tb2RlbFwiKTtcbmNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IHsgYXV0aDogQXV0aCwgaXNPd25lciB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy9hdXRoXCIpO1xuXG5jb25zdCByb3V0ZXIgPSByZXF1aXJlKFwiZXhwcmVzc1wiKS5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5nZXQoXCIvXCIsIEF1dGgoW1JvbGUuYWRtaW4sIFJvbGUub3duZXJdKSwgaXNPd25lcigpLCBnZXRBY2NvdW50cyk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIHRyeSB7XG4gICAgICAgIC8vIGlmICghY29tcGFueSAmJiByZXEudXNlci5yb2xlICE9PSBSb2xlLmFkbWluKSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDEpLmpzb24oeyBtZXNzYWdlOiBcIlVuYXV0aG9yaXplZFwiIH0pO1xuICAgICAgICAvLyB9XG5cbiAgICAgICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBBY2NvdW50LnF1ZXJ5KCkud2hlcmUoe1xuICAgICAgICAgICAgY29tcGFueV9pZDogcmVxLnBhcmFtcy5jb21wYW55X2lkLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWFjY291bnRzKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVzLmpzb24oYWNjb3VudHMpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoZXJyb3IpO1xuICAgIH1cbn1cbiJdfQ==", "originalCode": "const Account = require(\"./accounts.model\");\nconst Company = require(\"../company.model\");\nconst Role = require(\"../../../utils/role\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\n\nconst router = require(\"express\").Router({\n mergeParams: true,\n});\n\nrouter.get(\"/\", Auth([Role.admin, Role.owner]), isOwner(), getAccounts);\n\nmodule.exports = router;\n\nasync function getAccounts(req, res, next) {\n try {\n // if (!company && req.user.role !== Role.admin) {\n // return res.status(401).json({ message: \"Unauthorized\" });\n // }\n\n const accounts = await Account.query().where({\n company_id: req.params.company_id,\n });\n\n if (!accounts) {\n return res.status(404);\n }\n\n res.json(accounts);\n } catch (error) {\n next(error);\n }\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/f5/accountsroutes_f54e96c4db6e4acb21a322f351ad9a58.map", "wrapperLength": 89 }, "result": { "scriptId": "2952", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3778, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3775, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "getAccounts", "ranges": [ { "startOffset": 470, "endOffset": 880, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n}\n\nmodule.exports = Account;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY291bnRzLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJzY2hlbWEiLCJBY2NvdW50IiwidGFibGVOYW1lIiwiYWNjb3VudHMiLCJqc29uU2NoZW1hIiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLE1BQU0sR0FBR0YsT0FBTyxDQUFDLHdCQUFELENBQXRCOztBQUVBLE1BQU1HLE9BQU4sU0FBc0JKLEtBQXRCLENBQTRCO0FBQ3hCLGFBQVdLLFNBQVgsR0FBdUI7QUFDbkIsV0FBT0gsVUFBVSxDQUFDSSxRQUFsQjtBQUNIOztBQUVELGFBQVdDLFVBQVgsR0FBd0I7QUFDcEIsV0FBT0osTUFBUDtBQUNIOztBQVB1Qjs7QUFVNUJLLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkwsT0FBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgdGFibGVOYW1lcyA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcbmNvbnN0IHNjaGVtYSA9IHJlcXVpcmUoXCIuL2FjY291bnRzLnNjaGVtYS5qc29uXCIpO1xuXG5jbGFzcyBBY2NvdW50IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5hY2NvdW50cztcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IEFjY291bnQ7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst schema = require(\"./accounts.schema.json\");\n\nclass Account extends Model {\n static get tableName() {\n return tableNames.accounts;\n }\n\n static get jsonSchema() {\n return schema;\n }\n}\n\nmodule.exports = Account;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/01/accountsmodel_01a1ad309c7db6ca01e6d4ebe4774684.map", "wrapperLength": 89 }, "result": { "scriptId": "2953", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 1669, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 1666, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Account", "ranges": [ { "startOffset": 245, "endOffset": 245, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 284, "endOffset": 337, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 348, "endOffset": 389, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./menu.validator\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/company_id/menu/:menu_id/category\n\nrouter.use(\"/:menu_id/category\", Category);\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService.createMenu(req.body).then(menu => res.json(menu)).catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n menuService.getAllCompanyMenus({\n company_id\n }).then(menus => {\n return menus ? menus.length == 1 ? res.json(menus[0]) : res.json(menus) : res.sendStatus(404);\n }).catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n menuService.getMenuById(id).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService.updateMenu(req.params.id, req.body).then(menu => menu ? res.json(menu) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n\n menuService._delete({\n id,\n company_id\n }).then(() => {\n res.json({\n id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIkNhdGVnb3J5IiwibWVudVNlcnZpY2UiLCJtZW51Iiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsInBhdGNoIiwidXBkYXRlIiwiZGVsZXRlIiwiX2RlbGV0ZU1lbnUiLCJtb2R1bGUiLCJleHBvcnRzIiwicmVxIiwicmVzIiwibmV4dCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVNZW51IiwidGhlbiIsImpzb24iLCJjYXRjaCIsIm1lbnVzIiwibGVuZ3RoIiwic2VuZFN0YXR1cyIsImlkIiwidXBkYXRlTWVudSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLGtCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyw0QkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyxxQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxRQUFRLEdBQUdQLE9BQU8sQ0FBQyw0QkFBRCxDQUF4Qjs7QUFFQSxNQUFNUSxXQUFXLEdBQUdSLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFDQSxNQUFNO0FBQUVTLEVBQUFBO0FBQUYsSUFBV1QsT0FBTyxDQUFDLCtCQUFELENBQXhCOztBQUVBLE1BQU1VLE1B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LENBQVdGLFVBQVosQ0FBOUI7QUFDQXRCLEVBQUFBLFdBQVcsQ0FDTmlDLFVBREwsQ0FDZ0JmLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUQzQixFQUMrQmQsR0FBRyxDQUFDRyxJQURuQyxFQUVLSyxJQUZMLENBRVd6QixJQUFELElBQVdBLElBQUksR0FBR2tCLEdBQUcsQ0FBQ1EsSUFBSixDQUFTMUIsSUFBVCxDQUFILEdBQW9Ca0IsR0FBRyxDQUFDWSxVQUFKLENBQWUsR0FBZixDQUY3QyxFQUdLSCxLQUhMLENBR1dSLElBSFg7QUFJSDs7QUFFRCxTQUFTTCxXQUFULENBQXFCRyxHQUFyQixFQUEwQkMsR0FBMUIsRUFBK0JDLElBQS9CLEVBQXFDO0FBQ2pDO0FBQ0EsUUFBTVksRUFBRSxHQUFHVCxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXUSxFQUFaLENBQW5CO0FBQ0EsUUFBTVYsVUFBVSxHQUFHQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixVQUFaLENBQTNCOztBQUNBdEIsRUFBQUEsV0FBVyxDQUNOa0MsT0FETCxDQUNhO0FBQ0xGLElBQUFBLEVBREs7QUFFTFYsSUFBQUE7QUFGSyxHQURiLEVBS0tJLElBTEwsQ0FLVSxNQUFNO0FBQ1JQLElBQUFBLEdBQUcsQ0FBQ1EsSUFBSixDQUFTO0FBQUVLLE1BQUFBO0FBQUYsS0FBVDtBQUNILEdBUEwsRUFRS0osS0FSTCxDQVFXUixJQVJYO0FBU0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL21lbnUudmFsaWRhdG9yXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5L2NhdGVnb3J5LnJvdXRlc1wiKTtcblxuY29uc3QgbWVudVNlcnZpY2UgPSByZXF1aXJlKFwiLi9tZW51LnNlcnZpY2VcIik7XG5jb25zdCB7IG1lbnUgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9jb25zdGFudHMvdGFibGVOYW1lc1wiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbi8vIGFwaS92MS9jb21wYW55L2NvbXBhbnlfaWQvbWVudS86bWVudV9pZC9jYXRlZ29yeVxucm91dGVyLnVzZShcIi86bWVudV9pZC9jYXRlZ29yeVwiLCBDYXRlZ29yeSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi9cIiwgZ2V0QWxsQ29tcGFueU1lbnVzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldE1lbnVCeUlkKTtcbnJvdXRlci5wYXRjaChcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIHVwZGF0ZVNjaGVtYSwgdXBkYXRlKTtcbnJvdXRlci5kZWxldGUoXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBfZGVsZXRlTWVudSk7XG5cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuXG5mdW5jdGlvbiBjcmVhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICByZXEuYm9keS5jb21wYW55X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5jb21wYW55X2lkKTtcbiAgICBtZW51U2VydmljZVxuICAgICAgICAuY3JlYXRlTWVudShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IHJlcy5qc29uKG1lbnUpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlNZW51cyhyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGNvbXBhbnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNvbXBhbnlfaWQpO1xuXG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLmdldEFsbENvbXBhbnlNZW51cyh7IGNvbXBhbnlfaWQgfSlcbiAgICAgICAgLnRoZW4oKG1lbnVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gbWVudXNcbiAgICAgICAgICAgICAgICA/IG1lbnVzLmxlbmd0aCA9PSAxXG4gICAgICAgICAgICAgICAgICAgID8gcmVzLmpzb24obWVudXNbMF0pXG4gICAgICAgICAgICAgICAgICAgIDogcmVzLmpzb24obWVudXMpXG4gICAgICAgICAgICAgICAgOiByZXMuc2VuZFN0YXR1cyg0MDQpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldE1lbnVCeUlkKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcblxuICAgIG1lbnVTZXJ2aWNlXG4gICAgICAgIC5nZXRNZW51QnlJZChpZClcbiAgICAgICAgLnRoZW4oKG1lbnUpID0+IChtZW51ID8gcmVzLmpzb24obWVudSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGNhbiB1cGRhdGUgdGhlaXIgY29tcGFueSBtZW51XG4gICAgcmVxLmJvZHkuY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLnVwZGF0ZU1lbnUocmVxLnBhcmFtcy5pZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChtZW51KSA9PiAobWVudSA/IHJlcy5qc29uKG1lbnUpIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZU1lbnUocmVxLCByZXMsIG5leHQpIHtcbiAgICAvLyBvbmx5IG93bmVyIGRlbGV0ZSBjYW4gZGVsZXRlIHRoZWlyIGNvbXBhbnkgbWVudVxuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgY29uc3QgY29tcGFueV9pZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCk7XG4gICAgbWVudVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUoe1xuICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICB9KVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICByZXMuanNvbih7IGlkIH0pO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./menu.validator\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst Category = require(\"./category/category.routes\");\n\nconst menuService = require(\"./menu.service\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/company_id/menu/:menu_id/category\nrouter.use(\"/:menu_id/category\", Category);\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyMenus);\nrouter.get(\"/:id\", getMenuById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteMenu);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .createMenu(req.body)\n .then((menu) => res.json(menu))\n .catch(next);\n}\n\nfunction getAllCompanyMenus(req, res, next) {\n const company_id = parseInt(req.params.company_id);\n\n menuService\n .getAllCompanyMenus({ company_id })\n .then((menus) => {\n return menus\n ? menus.length == 1\n ? res.json(menus[0])\n : res.json(menus)\n : res.sendStatus(404);\n })\n .catch(next);\n}\n\nfunction getMenuById(req, res, next) {\n const id = parseInt(req.params.id);\n\n menuService\n .getMenuById(id)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company menu\n req.body.company_id = parseInt(req.params.company_id);\n menuService\n .updateMenu(req.params.id, req.body)\n .then((menu) => (menu ? res.json(menu) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction _deleteMenu(req, res, next) {\n // only owner delete can delete their company menu\n const id = parseInt(req.params.id);\n const company_id = parseInt(req.params.company_id);\n menuService\n ._delete({\n id,\n company_id,\n })\n .then(() => {\n res.json({ id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/be/menuroutes_be402008d6024066f043e251d81c7a52.map", "wrapperLength": 89 }, "result": { "scriptId": "2954", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9965, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9962, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 950, "endOffset": 1119, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 1121, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 1412, "endOffset": 1591, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1593, "endOffset": 1852, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteMenu", "ranges": [ { "startOffset": 1854, "endOffset": 2155, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUudmFsaWRhdG9yLmpzIl0sIm5hbWVzIjpbIkpvaSIsInJlcXVpcmUiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJleHBvcnRzIiwiY3JlYXRlU2NoZW1hIiwicmVxIiwicmVzIiwibmV4dCIsInNjaGVtYSIsIm9iamVjdCIsIm5hbWUiLCJzdHJpbmciLCJyZXF1aXJlZCIsImRlc2NyaXB0aW9uIiwiY292ZXJfdXJsIiwidXBkYXRlU2NoZW1hIiwic2NoZW1hUnVsZXMiLCJlbXB0eSJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTUEsR0FBRyxHQUFHQyxPQUFPLENBQUMsS0FBRCxDQUFuQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUdELE9BQU8sQ0FBQyx1Q0FBRCxDQUEvQjs7QUFFQUUsT0FBTyxDQUFDQyxZQUFSLEdBQXVCLENBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1DLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVc7QUFDdEJDLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFEZ0I7QUFFdEJDLElBQUFBLFdBQVcsRUFBRWIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFGUztBQUd0QkUsSUFBQUEsU0FBUyxFQUFFZCxHQUFHLENBQUNXLE1BQUo7QUFIVyxHQUFYLENBQWY7QUFLQVQsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDWSxZQUFSLEdBQXVCLENBQUNWLEdBQUQsRUFBTUMsR0FBTixFQUFXQyxJQUFYLEtBQW9CO0FBQ3ZDLFFBQU1TLFdBQVcsR0FBRztBQUNoQk4sSUFBQUEsSUFBSSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYU0sS0FBYixDQUFtQixFQUFuQixDQURVO0FBRWhCSixJQUFBQSxXQUFXLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhTSxLQUFiLENBQW1CLEVBQW5CLENBRkc7QUFHaEJILElBQUFBLFNBQVMsRUFBRWQsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFwQjtBQU1BLFFBQU1ULE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdPLFdBQVgsQ0FBZjtBQUVBZCxFQUFBQSxlQUFlLENBQUNHLEdBQUQsRUFBTUUsSUFBTixFQUFZQyxNQUFaLENBQWY7QUFDSCxDQVZEIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgSm9pID0gcmVxdWlyZShcImpvaVwiKTtcbmNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvdmFsaWRhdGVSZXF1ZXN0XCIpO1xuXG5leHBvcnRzLmNyZWF0ZVNjaGVtYSA9IChyZXEsIHJlcywgbmV4dCkgPT4ge1xuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoe1xuICAgICAgICBuYW1lOiBKb2kuc3RyaW5nKCkucmVxdWlyZWQoKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBjb3Zlcl91cmw6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdChzY2hlbWFSdWxlcyk7XG5cbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcbiJdfQ==", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n description: Joi.string().required(),\n cover_url: Joi.string(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n description: Joi.string().empty(\"\"),\n cover_url: Joi.string().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0b/menuvalidator_0bff2254f7ebb231be87a9bba47a9cd7.map", "wrapperLength": 89 }, "result": { "scriptId": "2955", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 3168, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 3165, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 216, "endOffset": 418, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 444, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./category.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../utils/role\");\n\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\n\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true\n}); // api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\n\nrouter.use(\"/:category_id/item\", Item); //api/v1/company/:company_id/:menu_id/category/\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService.createCategory(req.body).then(category => res.json(category)).catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n categoryService.getAllCompanyCategorys({\n menu_id\n }).then(categories => categories ? res.json(categories) : res.sendStatus(404)).catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService.getCategoryById(id).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n categoryService.updateCategory(id, payload).then(category => category ? res.json(category) : res.sendStatus(404)).catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id)\n };\n\n categoryService._delete(payload).then(() => {\n res.json({\n id: payload.id\n });\n }).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZVNjaGVtYSIsInVwZGF0ZVNjaGVtYSIsImF1dGgiLCJBdXRoIiwiaXNPd25lciIsIlJvbGUiLCJJdGVtIiwiY2F0ZWdvcnlTZXJ2aWNlIiwiZXJyb3IiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInVzZSIsInBvc3QiLCJvd25lciIsImNyZWF0ZSIsImdldCIsImdldEFsbENvbXBhbnlDYXRlZ29yeXMiLCJnZXRDYXRlZ29yeUJ5SWQiLCJwYXRjaCIsInVwZGF0ZSIsImRlbGV0ZSIsIl9kZWxldGVDYXRlZ29yeSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiY3JlYXRlQ2F0ZWdvcnkiLCJib2R5IiwidGhlbiIsImNhdGVnb3J5IiwianNvbiIsImNhdGNoIiwibWVudV9pZCIsInBhcnNlSW50IiwicGFyYW1zIiwiY2F0ZWdvcmllcyIsInNlbmRTdGF0dXMiLCJpZCIsInBheWxvYWQiLCJ1cGRhdGVDYXRlZ29yeSIsIl9kZWxldGUiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLHVCQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQywrQkFBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxJQUFJLEdBQUdQLE9BQU8sQ0FBQyxvQkFBRCxDQUFwQjs7QUFFQSxNQUFNUSxlQUFlLEdBQUdSLE9BQU8sQ0FBQyxvQkFBRCxDQUEvQjs7QUFDQSxNQUFNUyxLQUFLLEdBQUdULE9BQU8sQ0FB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QixFQUVLVixJQUZMLENBRVdDLFFBQUQsSUFDRkEsUUFBUSxHQUFHTCxHQUFHLENBQUNNLElBQUosQ0FBU0QsUUFBVCxDQUFILEdBQXdCTCxHQUFHLENBQUNZLFVBQUosQ0FBZSxHQUFmLENBSHhDLEVBS0tMLEtBTEwsQ0FLV04sSUFMWDtBQU1IOztBQUVELFNBQVNMLGVBQVQsQ0FBeUJHLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckM7QUFDQSxRQUFNYSxPQUFPLEdBQUc7QUFDWkQsSUFBQUEsRUFBRSxFQUFFSixRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRyxFQUFaLENBREE7QUFFWkwsSUFBQUEsT0FBTyxFQUFFQyxRQUFRLENBQUNWLEdBQUcsQ0FBQ1csTUFBSixDQUFXRixPQUFaO0FBRkwsR0FBaEI7O0FBS0EzQixFQUFBQSxlQUFlLENBQ1ZtQyxPQURMLENBQ2FGLE9BRGIsRUFFS1YsSUFGTCxDQUVVLE1BQU07QUFDUkosSUFBQUEsR0FBRyxDQUFDTSxJQUFKLENBQVM7QUFBRU8sTUFBQUEsRUFBRSxFQUFFQyxPQUFPLENBQUNEO0FBQWQsS0FBVDtBQUNILEdBSkwsRUFLS04sS0FMTCxDQUtXTixJQUxYO0FBTUgiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5cbmNvbnN0IHsgY3JlYXRlU2NoZW1hLCB1cGRhdGVTY2hlbWEgfSA9IHJlcXVpcmUoXCIuL2NhdGVnb3J5LnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtL2l0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCBjYXRlZ29yeVNlcnZpY2UgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zZXJ2aWNlXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbmNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKHtcbiAgICBtZXJnZVBhcmFtczogdHJ1ZSxcbn0pO1xuXG4vLyBhcGkvdjEvY29tcGFueS86Y29tcGFueV9pZC9tZW51LzptZW51X2lkL2NhdGVnb3J5LzpjYXRlZ29yeV9pZC9pdGVtXG5yb3V0ZXIudXNlKFwiLzpjYXRlZ29yeV9pZC9pdGVtXCIsIEl0ZW0pO1xuXG4vL2FwaS92MS9jb21wYW55Lzpjb21wYW55X2lkLzptZW51X2lkL2NhdGVnb3J5L1xucm91dGVyLnBvc3QoXCIvXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCBjcmVhdGVTY2hlbWEsIGNyZWF0ZSk7XG5yb3V0ZXIuZ2V0KFwiL1wiLCBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzKTtcbnJvdXRlci5nZXQoXCIvOmlkXCIsIGdldENhdGVnb3J5QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZSk7XG5yb3V0ZXIuZGVsZXRlKFwiLzppZFwiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgX2RlbGV0ZUNhdGVnb3J5KTtcblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG5cbmZ1bmN0aW9uIGNyZWF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuY3JlYXRlQ2F0ZWdvcnkocmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT4gcmVzLmpzb24oY2F0ZWdvcnkpKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBtZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyh7IG1lbnVfaWQgfSlcbiAgICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+XG4gICAgICAgICAgICBjYXRlZ29yaWVzID8gcmVzLmpzb24oY2F0ZWdvcmllcykgOiByZXMuc2VuZFN0YXR1cyg0MDQpXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAuZ2V0Q2F0ZWdvcnlCeUlkKGlkKVxuICAgICAgICAudGhlbigoY2F0ZWdvcnkpID0+XG4gICAgICAgICAgICBjYXRlZ29yeSA/IHJlcy5qc29uKGNhdGVnb3J5KSA6IHJlcy5zZW5kU3RhdHVzKDQwNClcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZShyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIG9ubHkgb3duZXIgY2FuIHVwZGF0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgcGF5bG9hZC5tZW51X2lkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5tZW51X2lkKTtcblxuICAgIGNhdGVnb3J5U2VydmljZVxuICAgICAgICAudXBkYXRlQ2F0ZWdvcnkoaWQsIHBheWxvYWQpXG4gICAgICAgIC50aGVuKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgIGNhdGVnb3J5ID8gcmVzLmpzb24oY2F0ZWdvcnkpIDogcmVzLnNlbmRTdGF0dXMoNDA0KVxuICAgICAgICApXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gX2RlbGV0ZUNhdGVnb3J5KHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgLy8gb25seSBvd25lciBkZWxldGUgY2FuIGRlbGV0ZSB0aGVpciBjb21wYW55IGNhdGVnb3J5XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgICAgaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpLFxuICAgICAgICBtZW51X2lkOiBwYXJzZUludChyZXEucGFyYW1zLm1lbnVfaWQpLFxuICAgIH07XG5cbiAgICBjYXRlZ29yeVNlcnZpY2VcbiAgICAgICAgLl9kZWxldGUocGF5bG9hZClcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmVzLmpzb24oeyBpZDogcGF5bG9hZC5pZCB9KTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuIl19", "originalCode": "const express = require(\"express\");\n\nconst { createSchema, updateSchema } = require(\"./category.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../_middlewares/auth\");\nconst Role = require(\"../../../../utils/role\");\nconst Item = require(\"./item/item.routes\");\n\nconst categoryService = require(\"./category.service\");\nconst error = require(\"../../../../utils/error\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\n// api/v1/company/:company_id/menu/:menu_id/category/:category_id/item\nrouter.use(\"/:category_id/item\", Item);\n\n//api/v1/company/:company_id/:menu_id/category/\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/\", getAllCompanyCategorys);\nrouter.get(\"/:id\", getCategoryById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, update);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), _deleteCategory);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n categoryService\n .createCategory(req.body)\n .then((category) => res.json(category))\n .catch(next);\n}\n\nfunction getAllCompanyCategorys(req, res, next) {\n const menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .getAllCompanyCategorys({ menu_id })\n .then((categories) =>\n categories ? res.json(categories) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction getCategoryById(req, res, next) {\n const id = parseInt(req.params.id);\n categoryService\n .getCategoryById(id)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction update(req, res, next) {\n // only owner can update their company category\n const payload = req.body;\n const id = parseInt(req.params.id);\n payload.menu_id = parseInt(req.params.menu_id);\n\n categoryService\n .updateCategory(id, payload)\n .then((category) =>\n category ? res.json(category) : res.sendStatus(404)\n )\n .catch(next);\n}\n\nfunction _deleteCategory(req, res, next) {\n // only owner delete can delete their company category\n const payload = {\n id: parseInt(req.params.id),\n menu_id: parseInt(req.params.menu_id),\n };\n\n categoryService\n ._delete(payload)\n .then(() => {\n res.json({ id: payload.id });\n })\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b7/categoryroutes_b78182bf6ed1b259008b6f4873099820.map", "wrapperLength": 89 }, "result": { "scriptId": "2956", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10017, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10014, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 1022, "endOffset": 1150, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 1152, "endOffset": 1400, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1402, "endOffset": 1605, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "update", "ranges": [ { "startOffset": 1607, "endOffset": 1937, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_deleteCategory", "ranges": [ { "startOffset": 1939, "endOffset": 2251, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVTY2hlbWEiLCJyZXEiLCJyZXMiLCJuZXh0Iiwic2NoZW1hIiwib2JqZWN0IiwibmFtZSIsInN0cmluZyIsInJlcXVpcmVkIiwibWVudV9pZCIsIm51bWJlciIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsMENBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxPQUFPLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBRmEsR0FBWCxDQUFmO0FBSUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBTkQ7O0FBUUFMLE9BQU8sQ0FBQ1ksWUFBUixHQUF1QixDQUFDVixHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNUyxXQUFXLEdBQUc7QUFDaEJOLElBQUFBLElBQUksRUFBRVYsR0FBRyxDQUFDVyxNQUFKLEdBQWFNLEtBQWIsQ0FBbUIsRUFBbkIsQ0FEVTtBQUVoQkosSUFBQUEsT0FBTyxFQUFFYixHQUFHLENBQUNjLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZPLEdBQXBCO0FBS0EsUUFBTVQsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBV08sV0FBWCxDQUFmO0FBRUFkLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVEQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5yZXF1aXJlZCgpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICB9KTtcbiAgICB2YWxpZGF0ZVJlcXVlc3QocmVxLCBuZXh0LCBzY2hlbWEpO1xufTtcblxuZXhwb3J0cy51cGRhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWFSdWxlcyA9IHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgICAgICBtZW51X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n menu_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n menu_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/1b/categoryvalidators_1b6fa12bad6d90716c229117a118363b.map", "wrapperLength": 89 }, "result": { "scriptId": "2957", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2827, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2824, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 219, "endOffset": 388, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 414, "endOffset": 616, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createSchema,\n updateSchema\n} = require(\"./item.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../../../_middlewares/auth\");\n\nconst Role = require(\"../../../../../utils/role\");\n\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService.createItem(req.body).then(item => res.status(201).json(item)).catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.getItemById(id).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.updateItem(id, req.body).then(item => item ? res.json(item) : res.sendStatus(404)).catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService.deleteItem({\n id\n }).then(() => res.json({\n message: \"Item deleted successfully\",\n id\n })).catch(next);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ucm91dGVzLmpzIl0sIm5hbWVzIjpbImV4cHJlc3MiLCJyZXF1aXJlIiwiY3JlYXRlU2NoZW1hIiwidXBkYXRlU2NoZW1hIiwiYXV0aCIsIkF1dGgiLCJpc093bmVyIiwiUm9sZSIsIml0ZW1TZXJ2aWNlIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJwb3N0Iiwib3duZXIiLCJjcmVhdGUiLCJnZXQiLCJnZXRCeUlkIiwicGF0Y2giLCJ1cGRhdGVJdGVtIiwiZGVsZXRlIiwiZGVsZXRlSXRlbSIsIm1vZHVsZSIsImV4cG9ydHMiLCJyZXEiLCJyZXMiLCJuZXh0IiwiYm9keSIsImNhdGVnb3J5X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJjcmVhdGVJdGVtIiwidGhlbiIsIml0ZW0iLCJzdGF0dXMiLCJqc29uIiwiY2F0Y2giLCJpZCIsImdldEl0ZW1CeUlkIiwic2VuZFN0YXR1cyIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxZQUFGO0FBQWdCQyxFQUFBQTtBQUFoQixJQUFpQ0YsT0FBTyxDQUFDLG1CQUFELENBQTlDOztBQUNBLE1BQU07QUFBRUcsRUFBQUEsSUFBSSxFQUFFQyxJQUFSO0FBQWNDLEVBQUFBO0FBQWQsSUFBMEJMLE9BQU8sQ0FBQyxrQ0FBRCxDQUF2Qzs7QUFDQSxNQUFNTSxJQUFJLEdBQUdOLE9BQU8sQ0FBQywyQkFBRCxDQUFwQjs7QUFDQSxNQUFNTyxXQUFXLEdBQUdQLE9BQU8sQ0FBQyxnQkFBRCxDQUEzQjs7QUFFQSxNQUFNUSxNQUFNLEdBQUdULE9BQU8sQ0FBQ1UsTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxJQUFQLENBQVksR0FBWixFQUFpQlAsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXJCLEVBQXFDUCxPQUFPLEVBQTVDLEVBQWdESixZQUFoRCxFQUE4RFksTUFBOUQ7QUFDQUwsTUFBTSxDQUFDTSxHQUFQLENBQVcsTUFBWCxFQUFtQkMsT0FBbkI7QUFDQVAsTUFBTSxDQUFDUSxLQUFQLENBQWEsTUFBYixFQUFxQlosSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQXpCLEVBQXlDUCxPQUFPLEVBQWhELEVBQW9ESCxZQUFwRCxFQUFrRWUsVUFBbEU7QUFDQVQsTUFBTSxDQUFDVSxNQUFQLENBQWMsTUFBZCxFQUFzQmQsSUFBSSxDQUFDLENBQUNFLElBQUksQ0FBQ00sS0FBTixDQUFELENBQTFCLEVBQTBDUCxPQUFPLEVBQWpELEVBQXFEYyxVQUFyRDtBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJiLE1BQWpCOztBQUVBLFNBQVNLLE1BQVQsQ0FBZ0JTLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQkMsSUFBMUIsRUFBZ0M7QUFDNUJGLEVBQUFBLEdBQUcsQ0FBQ0csSUFBSixDQUFTQyxXQUFULEdBQXVCQyxRQUFRLENBQUNMLEdBQUcsQ0FBQ00sTUFBSixDQUFXRixXQUFaLENBQS9CO0FBQ0FuQixFQUFBQSxXQUFXLENBQ05zQixVQURMLENBQ2dCUCxHQUFHLENBQUNHLElBRHBCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFVUixHQUFHLENBQUNTLE1BQUosQ0FBVyxHQUFYLEVBQWdCQyxJQUFoQixDQUFxQkYsSUFBckIsQ0FGcEIsRUFHS0csS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1QsT0FBVCxDQUFpQk8sR0FBakIsRUFBc0JDLEdBQXRCLEVBQTJCQyxJQUEzQixFQUFpQztBQUM3QixRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTjZCLFdBREwsQ0FDaUJELEVBRGpCLEVBRUtMLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU1AsVUFBVCxDQUFvQkssR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlUsVUFETCxDQUNnQmtCLEVBRGhCLEVBQ29CYixHQUFHLENBQUNHLElBRHhCLEVBRUtLLElBRkwsQ0FFV0MsSUFBRCxJQUFXQSxJQUFJLEdBQUdSLEdBQUcsQ0FBQ1UsSUFBSixDQUFTRixJQUFULENBQUgsR0FBb0JSLEdBQUcsQ0FBQ2MsVUFBSixDQUFlLEdBQWYsQ0FGN0MsRUFHS0gsS0FITCxDQUdXVixJQUhYO0FBSUg7O0FBRUQsU0FBU0wsVUFBVCxDQUFvQkcsR0FBcEIsRUFBeUJDLEdBQXpCLEVBQThCQyxJQUE5QixFQUFvQztBQUNoQyxRQUFNVyxFQUFFLEdBQUdSLFFBQVEsQ0FBQ0wsR0FBRyxDQUFDTSxNQUFKLENBQVdPLEVBQVosQ0FBbkI7QUFDQTVCLEVBQUFBLFdBQVcsQ0FDTlksVUFETCxDQUNnQjtBQUFFZ0IsSUFBQUE7QUFBRixHQURoQixFQUVLTCxJQUZMLENBRVUsTUFDRlAsR0FBRyxDQUFDVSxJQUFKLENBQVM7QUFDTEssSUFBQUEsT0FBTyxFQUFFLDJCQURKO0FBRUxILElBQUFBO0FBRkssR0FBVCxDQUhSLEVBUUtELEtBUkwsQ0FRV1YsSUFSWDtBQVNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBjcmVhdGVTY2hlbWEsIHVwZGF0ZVNjaGVtYSB9ID0gcmVxdWlyZShcIi4vaXRlbS52YWxpZGF0b3JzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoLCBpc093bmVyIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCBSb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBpdGVtU2VydmljZSA9IHJlcXVpcmUoXCIuL2l0ZW0uc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wb3N0KFwiL1wiLCBBdXRoKFtSb2xlLm93bmVyXSksIGlzT3duZXIoKSwgY3JlYXRlU2NoZW1hLCBjcmVhdGUpO1xucm91dGVyLmdldChcIi86aWRcIiwgZ2V0QnlJZCk7XG5yb3V0ZXIucGF0Y2goXCIvOmlkXCIsIEF1dGgoW1JvbGUub3duZXJdKSwgaXNPd25lcigpLCB1cGRhdGVTY2hlbWEsIHVwZGF0ZUl0ZW0pO1xucm91dGVyLmRlbGV0ZShcIi86aWRcIiwgQXV0aChbUm9sZS5vd25lcl0pLCBpc093bmVyKCksIGRlbGV0ZUl0ZW0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvdXRlcjtcblxuZnVuY3Rpb24gY3JlYXRlKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgcmVxLmJvZHkuY2F0ZWdvcnlfaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmNhdGVnb3J5X2lkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAuY3JlYXRlSXRlbShyZXEuYm9keSlcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IHJlcy5zdGF0dXMoMjAxKS5qc29uKGl0ZW0pKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG5cbmZ1bmN0aW9uIGdldEJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBjb25zdCBpZCA9IHBhcnNlSW50KHJlcS5wYXJhbXMuaWQpO1xuICAgIGl0ZW1TZXJ2aWNlXG4gICAgICAgIC5nZXRJdGVtQnlJZChpZClcbiAgICAgICAgLnRoZW4oKGl0ZW0pID0+IChpdGVtID8gcmVzLmpzb24oaXRlbSkgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVJdGVtKHJlcSwgcmVzLCBuZXh0KSB7XG4gICAgY29uc3QgaWQgPSBwYXJzZUludChyZXEucGFyYW1zLmlkKTtcbiAgICBpdGVtU2VydmljZVxuICAgICAgICAudXBkYXRlSXRlbShpZCwgcmVxLmJvZHkpXG4gICAgICAgIC50aGVuKChpdGVtKSA9PiAoaXRlbSA/IHJlcy5qc29uKGl0ZW0pIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZGVsZXRlSXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGlkID0gcGFyc2VJbnQocmVxLnBhcmFtcy5pZCk7XG4gICAgaXRlbVNlcnZpY2VcbiAgICAgICAgLmRlbGV0ZUl0ZW0oeyBpZCB9KVxuICAgICAgICAudGhlbigoKSA9PlxuICAgICAgICAgICAgcmVzLmpzb24oe1xuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiSXRlbSBkZWxldGVkIHN1Y2Nlc3NmdWxseVwiLFxuICAgICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuY2F0Y2gobmV4dCk7XG59XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { createSchema, updateSchema } = require(\"./item.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../../../_middlewares/auth\");\nconst Role = require(\"../../../../../utils/role\");\nconst itemService = require(\"./item.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.post(\"/\", Auth([Role.owner]), isOwner(), createSchema, create);\nrouter.get(\"/:id\", getById);\nrouter.patch(\"/:id\", Auth([Role.owner]), isOwner(), updateSchema, updateItem);\nrouter.delete(\"/:id\", Auth([Role.owner]), isOwner(), deleteItem);\n\nmodule.exports = router;\n\nfunction create(req, res, next) {\n req.body.category_id = parseInt(req.params.category_id);\n itemService\n .createItem(req.body)\n .then((item) => res.status(201).json(item))\n .catch(next);\n}\n\nfunction getById(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .getItemById(id)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction updateItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .updateItem(id, req.body)\n .then((item) => (item ? res.json(item) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction deleteItem(req, res, next) {\n const id = parseInt(req.params.id);\n itemService\n .deleteItem({ id })\n .then(() =>\n res.json({\n message: \"Item deleted successfully\",\n id,\n })\n )\n .catch(next);\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/36/itemroutes_36224a233e92438cb700c78a83979dce.map", "wrapperLength": 89 }, "result": { "scriptId": "2958", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 7128, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 7125, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "create", "ranges": [ { "startOffset": 709, "endOffset": 892, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getById", "ranges": [ { "startOffset": 894, "endOffset": 1069, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 1071, "endOffset": 1258, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 1260, "endOffset": 1466, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\")\n };\n const schema = Joi.object(schemaRules);\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0udmFsaWRhdG9ycy5qcyJdLCJuYW1lcyI6WyJKb2kiLCJyZXF1aXJlIiwidmFsaWRhdGVSZXF1ZXN0IiwiZXhwb3J0cyIsImNyZWF0ZVNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJuYW1lIiwic3RyaW5nIiwicmVxdWlyZWQiLCJwcmljZSIsIm51bWJlciIsInF1YW50aXR5IiwiZGVzY3JpcHRpb24iLCJpbWFnZV91cmwiLCJjYXRlZ29yeV9pZCIsInVwZGF0ZVNjaGVtYSIsInNjaGVtYVJ1bGVzIiwiZW1wdHkiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsNkNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsWUFBUixHQUF1QixDQUFDQyxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUN2QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCQyxJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRGdCO0FBRXRCQyxJQUFBQSxLQUFLLEVBQUViLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiLEVBRmU7QUFHdEJHLElBQUFBLFFBQVEsRUFBRWYsR0FBRyxDQUFDYyxNQUFKLEdBQWFGLFFBQWIsRUFIWTtBQUl0QkksSUFBQUEsV0FBVyxFQUFFaEIsR0FBRyxDQUFDVyxNQUFKLEdBQWFDLFFBQWIsRUFKUztBQUt0QkssSUFBQUEsU0FBUyxFQUFFakIsR0FBRyxDQUFDVyxNQUFKLEVBTFc7QUFNdEJPLElBQUFBLFdBQVcsRUFBRWxCLEdBQUcsQ0FBQ2MsTUFBSixHQUFhRixRQUFiO0FBTlMsR0FBWCxDQUFmO0FBUUFWLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBVkQ7O0FBWUFMLE9BQU8sQ0FBQ2dCLFlBQVIsR0FBdUIsQ0FBQ2QsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDdkMsUUFBTWEsV0FBVyxHQUFHO0FBQ2hCVixJQUFBQSxJQUFJLEVBQUVWLEdBQUcsQ0FBQ1csTUFBSixHQUFhVSxLQUFiLENBQW1CLEVBQW5CLENBRFU7QUFFaEJSLElBQUFBLEtBQUssRUFBRWIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUztBQUdoQk4sSUFBQUEsUUFBUSxFQUFFZixHQUFHLENBQUNjLE1BQUosR0FBYU8sS0FBYixDQUFtQixFQUFuQixDQUhNO0FBSWhCTCxJQUFBQSxXQUFXLEVBQUVoQixHQUFHLENBQUNXLE1BQUosR0FBYVUsS0FBYixDQUFtQixFQUFuQixDQUpHO0FBS2hCSixJQUFBQSxTQUFTLEVBQUVqQixHQUFHLENBQUNXLE1BQUosRUFMSztBQU1oQk8sSUFBQUEsV0FBVyxFQUFFbEIsR0FBRyxDQUFDYyxNQUFKLEdBQWFPLEtBQWIsQ0FBbUIsRUFBbkI7QUFORyxHQUFwQjtBQVNBLFFBQU1iLE1BQU0sR0FBR1IsR0FBRyxDQUFDUyxNQUFKLENBQVdXLFdBQVgsQ0FBZjtBQUVBbEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FiRCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEpvaSA9IHJlcXVpcmUoXCJqb2lcIik7XG5jb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL3ZhbGlkYXRlUmVxdWVzdFwiKTtcblxuZXhwb3J0cy5jcmVhdGVTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgbmFtZTogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIHByaWNlOiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5yZXF1aXJlZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbjogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgICAgIGltYWdlX3VybDogSm9pLnN0cmluZygpLFxuICAgICAgICBjYXRlZ29yeV9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hUnVsZXMgPSB7XG4gICAgICAgIG5hbWU6IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcHJpY2U6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgcXVhbnRpdHk6IEpvaS5udW1iZXIoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgZGVzY3JpcHRpb246IEpvaS5zdHJpbmcoKS5lbXB0eShcIlwiKSxcbiAgICAgICAgaW1hZ2VfdXJsOiBKb2kuc3RyaW5nKCksXG4gICAgICAgIGNhdGVnb3J5X2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoXCJcIiksXG4gICAgfTtcblxuICAgIGNvbnN0IHNjaGVtYSA9IEpvaS5vYmplY3Qoc2NoZW1hUnVsZXMpO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../../../_middlewares/validateRequest\");\n\nexports.createSchema = (req, res, next) => {\n const schema = Joi.object({\n name: Joi.string().required(),\n price: Joi.number().required(),\n quantity: Joi.number().required(),\n description: Joi.string().required(),\n image_url: Joi.string(),\n category_id: Joi.number().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateSchema = (req, res, next) => {\n const schemaRules = {\n name: Joi.string().empty(\"\"),\n price: Joi.number().empty(\"\"),\n quantity: Joi.number().empty(\"\"),\n description: Joi.string().empty(\"\"),\n image_url: Joi.string(),\n category_id: Joi.number().empty(\"\"),\n };\n\n const schema = Joi.object(schemaRules);\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/b3/itemvalidators_b3b5560b6fc02d936e24d53b4a41cdcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2959", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4275, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4272, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createSchema", "ranges": [ { "startOffset": 222, "endOffset": 541, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateSchema", "ranges": [ { "startOffset": 567, "endOffset": 916, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Item = require(\"./item.model\");\n\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({\n id\n });\n\n if (!item) {\n return null;\n }\n\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query().delete().where({ ...queryParams\n });\n} // =================== helpers ============================\n\n\nasync function getItem(params) {\n const item = await Item.query().where({ ...params\n }).first();\n return item;\n}\n\nfunction basicDetails(item) {\n const {\n id,\n name,\n description\n } = item;\n return {\n id,\n name,\n description\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0uc2VydmljZS5qcyJdLCJuYW1lcyI6WyJJdGVtIiwicmVxdWlyZSIsImVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZUl0ZW0iLCJnZXRJdGVtQnlJZCIsInVwZGF0ZUl0ZW0iLCJkZWxldGVJdGVtIiwicGFyYW1zIiwiaXRlbSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRJdGVtIiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsIndoZXJlIiwiZmlyc3QiLCJiYXNpY0RldGFpbHMiLCJuYW1lIiwiZGVzY3JpcHRpb24iXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLGNBQUQsQ0FBcEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHRCxPQUFPLENBQUMsNEJBQUQsQ0FBckI7O0FBRUFFLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFdBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQTtBQUphLENBQWpCOztBQU9BLGVBQWVILFVBQWYsQ0FBMEJJLE1BQTFCLEVBQWtDO0FBQzlCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FBYUMsTUFBYixDQUFvQkgsTUFBcEIsQ0FBbkI7QUFDQSxTQUFPQyxJQUFQO0FBQ0g7O0FBRUQsZUFBZUosV0FBZixDQUEyQk8sRUFBM0IsRUFBK0I7QUFDM0IsUUFBTUgsSUFBSSxHQUFHLE1BQU1JLE9BQU8sQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBMUI7O0FBQ0EsTUFBSSxDQUFDSCxJQUFMLEVBQVc7QUFDUCxXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPQSxJQUFQO0FBQ0g7O0FBRUQsZUFBZUgsVUFBZixDQUEwQk0sRUFBMUIsRUFBOEJKLE1BQTlCLEVBQXNDO0FBQ2xDLFFBQU1GLFVBQVUsR0FBRyxNQUFNUCxJQUFJLENBQUNXLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DSixNQUFuQyxDQUF6QjtBQUVBLFNBQU9GLFVBQVA7QUFDSDs7QUFFRCxlQUFlQyxVQUFmLENBQTBCUSxXQUExQixFQUF1QztBQUNuQyxRQUFNaEIsSUFBSSxDQUFDVyxLQUFMLEdBQ0RNLE1BREMsR0FFREMsS0FGQyxDQUVLLEVBQUUsR0FBR0Y7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUNBLGVBQWVGLE9BQWYsQ0FBdUJMLE1BQXZCLEVBQStCO0FBQzNCLFFBQU1DLElBQUksR0FBRyxNQUFNVixJQUFJLENBQUNXLEtBQUwsR0FDZE8sS0FEYyxDQUNSLEVBQUUsR0FBR1Q7QUFBTCxHQURRLEVBRWRVLEtBRmMsRUFBbkI7QUFHQSxTQUFPVCxJQUFQO0FBQ0g7O0FBRUQsU0FBU1UsWUFBVCxDQUFzQlYsSUFBdEIsRUFBNEI7QUFDeEIsUUFBTTtBQUFFRyxJQUFBQSxFQUFGO0FBQU1RLElBQUFBLElBQU47QUFBWUMsSUFBQUE7QUFBWixNQUE0QlosSUFBbEM7QUFDQSxTQUFPO0FBQUVHLElBQUFBLEVBQUY7QUFBTVEsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQTtBQUFaLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEl0ZW0gPSByZXF1aXJlKFwiLi9pdGVtLm1vZGVsXCIpO1xuY29uc3QgZXJyb3IgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vdXRpbHMvZXJyb3JcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGNyZWF0ZUl0ZW0sXG4gICAgZ2V0SXRlbUJ5SWQsXG4gICAgdXBkYXRlSXRlbSxcbiAgICBkZWxldGVJdGVtLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlSXRlbShwYXJhbXMpIHtcbiAgICBjb25zdCBpdGVtID0gYXdhaXQgSXRlbS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBpdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRJdGVtQnlJZChpZCkge1xuICAgIGNvbnN0IGl0ZW0gPSBhd2FpdCBnZXRJdGVtKHsgaWQgfSk7XG4gICAgaWYgKCFpdGVtKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaXRlbTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlSXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlSXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwgcGFyYW1zKTtcblxuICAgIHJldHVybiB1cGRhdGVJdGVtO1xufVxuXG5hc3luYyBmdW5jdGlvbiBkZWxldGVJdGVtKHF1ZXJ5UGFyYW1zKSB7XG4gICAgYXdhaXQgSXRlbS5xdWVyeSgpXG4gICAgICAgIC5kZWxldGUoKVxuICAgICAgICAud2hlcmUoeyAuLi5xdWVyeVBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldEl0ZW0ocGFyYW1zKSB7XG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IEl0ZW0ucXVlcnkoKVxuICAgICAgICAud2hlcmUoeyAuLi5wYXJhbXMgfSlcbiAgICAgICAgLmZpcnN0KCk7XG4gICAgcmV0dXJuIGl0ZW07XG59XG5cbmZ1bmN0aW9uIGJhc2ljRGV0YWlscyhpdGVtKSB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgZGVzY3JpcHRpb24gfSA9IGl0ZW07XG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGRlc2NyaXB0aW9uIH07XG59XG4iXX0=", "originalCode": "const Item = require(\"./item.model\");\nconst error = require(\"../../../../../utils/error\");\n\nmodule.exports = {\n createItem,\n getItemById,\n updateItem,\n deleteItem,\n};\n\nasync function createItem(params) {\n const item = await Item.query().insert(params);\n return item;\n}\n\nasync function getItemById(id) {\n const item = await getItem({ id });\n if (!item) {\n return null;\n }\n return item;\n}\n\nasync function updateItem(id, params) {\n const updateItem = await Item.query().patchAndFetchById(id, params);\n\n return updateItem;\n}\n\nasync function deleteItem(queryParams) {\n await Item.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// =================== helpers ============================\nasync function getItem(params) {\n const item = await Item.query()\n .where({ ...params })\n .first();\n return item;\n}\n\nfunction basicDetails(item) {\n const { id, name, description } = item;\n return { id, name, description };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/fe/itemservice_fe9f4b7b2b3f8f4e9108451c8cd072d7.map", "wrapperLength": 89 }, "result": { "scriptId": "2960", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4449, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4446, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createItem", "ranges": [ { "startOffset": 261, "endOffset": 363, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItemById", "ranges": [ { "startOffset": 365, "endOffset": 496, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateItem", "ranges": [ { "startOffset": 498, "endOffset": 631, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "deleteItem", "ranges": [ { "startOffset": 633, "endOffset": 734, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getItem", "ranges": [ { "startOffset": 797, "endOffset": 912, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 914, "endOffset": 1051, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../../../constants/tableNames\");\n\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Item;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIml0ZW0ubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwidGFibGVOYW1lcyIsImRiIiwiSXRlbSIsInRhYmxlTmFtZSIsIml0ZW0iLCJyZWxhdGlvbk1hcHBpbmdzIiwiQ2F0ZWdvcnkiLCJjYXRlZ29yeSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMscUNBQUQsQ0FBMUI7O0FBQ0EsTUFBTUUsRUFBRSxHQUFHRixPQUFPLENBQUMsbUJBQUQsQ0FBbEI7O0FBRUEsTUFBTUcsSUFBTixTQUFtQkosS0FBbkIsQ0FBeUI7QUFDckIsYUFBV0ssU0FBWCxHQUF1QjtBQUNuQixXQUFPSCxVQUFVLENBQUNJLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsUUFBUSxHQUFHUCxPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUEsV0FBTztBQUNIUSxNQUFBQSxRQUFRLEVBQUU7QUFDTkMsUUFBQUEsUUFBUSxFQUFFVixLQUFLLENBQUNXLG9CQURWO0FBRU5DLFFBQUFBLFVBQVUsRUFBRUosUUFGTjtBQUdOSyxRQUFBQSxJQUFJLEVBQUU7QUFDRkMsVUFBQUEsSUFBSSxFQUFHLEdBQUVaLFVBQVUsQ0FBQ0ksSUFBSyxjQUR2QjtBQUVGUyxVQUFBQSxFQUFFLEVBQUcsR0FBRWIsVUFBVSxDQUFDTyxRQUFTO0FBRnpCO0FBSEE7QUFEUCxLQUFQO0FBVUg7O0FBbEJvQjs7QUFxQnpCVCxLQUFLLENBQUNnQixJQUFOLENBQVdiLEVBQVg7QUFFQWMsTUFBTSxDQUFDQyxPQUFQLEdBQWlCZCxJQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vLi4vZGJcIik7XG5cbmNsYXNzIEl0ZW0gZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLml0ZW07XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICBjb25zdCBDYXRlZ29yeSA9IHJlcXVpcmUoXCIuLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ2F0ZWdvcnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLml0ZW19LmNhdGVnb3J5X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY2F0ZWdvcnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEl0ZW07XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../../../constants/tableNames\");\nconst db = require(\"../../../../../db\");\n\nclass Item extends Model {\n static get tableName() {\n return tableNames.item;\n }\n\n static get relationMappings() {\n const Category = require(\"../../category/category.model\");\n\n return {\n category: {\n relation: Model.BelongsToOneRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.item}.category_id`,\n to: `${tableNames.category}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Item;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8b/itemmodel_8b2ea8eb24d106daa44c9e881feaebd8.map", "wrapperLength": 89 }, "result": { "scriptId": "2961", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2995, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2992, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Item", "ranges": [ { "startOffset": 242, "endOffset": 242, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 278, "endOffset": 327, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 338, "endOffset": 670, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Category = require(\"./category.model\");\n\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({\n id\n }); //check if category name is duplicated\n\n if (params.name && category.name !== params.name && (await getCategory({\n name: params.name,\n menu_id: params.menu_id\n }))) {\n error(`Category ${params.name} already exists`);\n }\n\n const updatedcategory = await Category.query().patchAndFetchById(id, { ...params\n });\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({\n id\n });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query().delete().where({ ...params\n });\n} // =========== helpers===========\n\n\nasync function getCategory(param) {\n const category = await Category.query().where({ ...param\n }).withGraphFetched(\"items\").first();\n return category;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5LnNlcnZpY2UuanMiXSwibmFtZXMiOlsiQ2F0ZWdvcnkiLCJyZXF1aXJlIiwiZXJyb3IiLCJtb2R1bGUiLCJleHBvcnRzIiwiY3JlYXRlQ2F0ZWdvcnkiLCJ1cGRhdGVDYXRlZ29yeSIsImdldEFsbENhdGVnb3J5IiwiZ2V0QWxsQ29tcGFueUNhdGVnb3J5cyIsImdldENhdGVnb3J5QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJjYXRlZ29yeSIsInF1ZXJ5IiwiaW5zZXJ0IiwiaWQiLCJnZXRDYXRlZ29yeSIsIm5hbWUiLCJtZW51X2lkIiwidXBkYXRlZGNhdGVnb3J5IiwicGF0Y2hBbmRGZXRjaEJ5SWQiLCJjYXRlZ29yeXMiLCJ3aGVyZSIsImxlbmd0aCIsImRlbGV0ZSIsInBhcmFtIiwid2l0aEdyYXBoRmV0Y2hlZCIsImZpcnN0Il0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxRQUFRLEdBQUdDLE9BQU8sQ0FBQyxrQkFBRCxDQUF4Qjs7QUFDQSxNQUFNQyxLQUFLLEdBQUdELE9BQU8sQ0FBQyx5QkFBRCxDQUFyQjs7QUFFQUUsTUFBTSxDQUFDQyxPQUFQLEdBQWlCO0FBQ2JDLEVBQUFBLGNBRGE7QUFFYkMsRUFBQUEsY0FGYTtBQUdiQyxFQUFBQSxjQUhhO0FBSWJDLEVBQUFBLHNCQUphO0FBS2JDLEVBQUFBLGVBTGE7QUFNYkMsRUFBQUE7QUFOYSxDQUFqQjs7QUFTQSxlQUFlTCxjQUFmLENBQThCTSxNQUE5QixFQUFzQztBQUNsQyxRQUFNQyxRQUFRLEdBQUcsTUFBTVosUUFBUSxDQUFDYSxLQUFULEdBQWlCQyxNQUFqQixDQUF3QkgsTUFBeEIsQ0FBdkI7QUFDQSxTQUFPQyxRQUFQO0FBQ0g7O0FBRUQsZUFBZU4sY0FBZixDQUE4QlMsRUFBOUIsRUFBa0NKLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1DLFFBQVEsR0FBRyxNQUFNSSxXQUFXLENBQUM7QUFBRUQsSUFBQUE7QUFBRixHQUFELENBQWxDLENBRHNDLENBRXRDOztBQUNBLE1BQ0lKLE1BQU0sQ0FBQ00sSUFBUCxJQUNBTCxRQUFRLENBQUNLLElBQVQsS0FBa0JOLE1BQU0sQ0FBQ00sSUFEekIsS0FFQyxNQUFNRCxXQUFXLENBQUM7QUFDZkMsSUFBQUEsSUFBSSxFQUFFTixNQUFNLENBQUNNLElBREU7QUFFZkMsSUFBQUEsT0FBTyxFQUFFUCxNQUFNLENBQUNPO0FBRkQsR0FBRCxDQUZsQixDQURKLEVBT0U7QUFDRWhCLElBQUFBLEtBQUssQ0FBRSxZQUFXUyxNQUFNLENBQUNNLElBQUssaUJBQXpCLENBQUw7QUFDSDs7QUFDRCxRQUFNRSxlQUFlLEdBQUcsTUFBTW5CLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQk8saUJBQWpCLENBQW1DTCxFQUFuQyxFQUF1QyxFQUNqRSxHQUFHSjtBQUQ4RCxHQUF2QyxDQUE5QjtBQUlBLFNBQU9RLGVBQVA7QUFDSDs7QUFFRCxlQUFlWixjQUFmLEdBQWdDO0FBQzVCLFFBQU1jLFNBQVMsR0FBRyxNQUFNckIsUUFBUSxDQUFDYSxLQUFULEVBQXhCO0FBQ0EsU0FBT1EsU0FBUDtBQUNIOztBQUVELGVBQWViLHNCQUFmLENBQXNDRyxNQUF0QyxFQUE4QztBQUMxQyxRQUFNVSxTQUFTLEdBQUcsTUFBTXJCLFFBQVEsQ0FBQ2EsS0FBVCxHQUFpQlMsS0FBakIsQ0FBdUJYLE1BQXZCLENBQXhCOztBQUVBLE1BQUlVLFNBQVMsQ0FBQ0UsTUFBVixHQUFtQixDQUF2QixFQUEwQjtBQUN0QixXQUFPLElBQVA7QUFDSDs7QUFDRCxTQUFPRixTQUFQO0FBQ0g7O0FBRUQsZUFBZVosZUFBZixDQUErQk0sRUFBL0IsRUFBbUM7QUFDL0IsUUFBTUgsUUFBUSxHQUFHLE1BQU1JLFdBQVcsQ0FBQztBQUFFRCxJQUFBQTtBQUFGLEdBQUQsQ0FBbEM7QUFDQSxTQUFPSCxRQUFQO0FBQ0g7O0FBRUQsZUFBZUYsT0FBZixDQUF1QkMsTUFBdkIsRUFBK0I7QUFDM0IsUUFBTVgsUUFBUSxDQUFDYSxLQUFULEdBQ0RXLE1BREMsR0FFREYsS0FGQyxDQUVLLEVBQUUsR0FBR1g7QUFBTCxHQUZMLENBQU47QUFHSCxDLENBRUQ7OztBQUVBLGVBQWVLLFdBQWYsQ0FBMkJTLEtBQTNCLEVBQWtDO0FBQzlCLFFBQU1iLFFBQVEsR0FBRyxNQUFNWixRQUFRLENBQUNhLEtBQVQsR0FDbEJTLEtBRGtCLENBQ1osRUFBRSxHQUFHRztBQUFMLEdBRFksRUFFbEJDLGdCQUZrQixDQUVELE9BRkMsRUFHbEJDLEtBSGtCLEVBQXZCO0FBS0EsU0FBT2YsUUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQ2F0ZWdvcnkgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5tb2RlbFwiKTtcbmNvbnN0IGVycm9yID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL2Vycm9yXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVDYXRlZ29yeSxcbiAgICB1cGRhdGVDYXRlZ29yeSxcbiAgICBnZXRBbGxDYXRlZ29yeSxcbiAgICBnZXRBbGxDb21wYW55Q2F0ZWdvcnlzLFxuICAgIGdldENhdGVnb3J5QnlJZCxcbiAgICBfZGVsZXRlLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2F0ZWdvcnkocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpLmluc2VydChwYXJhbXMpO1xuICAgIHJldHVybiBjYXRlZ29yeTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlQ2F0ZWdvcnkoaWQsIHBhcmFtcykge1xuICAgIGNvbnN0IGNhdGVnb3J5ID0gYXdhaXQgZ2V0Q2F0ZWdvcnkoeyBpZCB9KTtcbiAgICAvL2NoZWNrIGlmIGNhdGVnb3J5IG5hbWUgaXMgZHVwbGljYXRlZFxuICAgIGlmIChcbiAgICAgICAgcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgY2F0ZWdvcnkubmFtZSAhPT0gcGFyYW1zLm5hbWUgJiZcbiAgICAgICAgKGF3YWl0IGdldENhdGVnb3J5KHtcbiAgICAgICAgICAgIG5hbWU6IHBhcmFtcy5uYW1lLFxuICAgICAgICAgICAgbWVudV9pZDogcGFyYW1zLm1lbnVfaWQsXG4gICAgICAgIH0pKVxuICAgICkge1xuICAgICAgICBlcnJvcihgQ2F0ZWdvcnkgJHtwYXJhbXMubmFtZX0gYWxyZWFkeSBleGlzdHNgKTtcbiAgICB9XG4gICAgY29uc3QgdXBkYXRlZGNhdGVnb3J5ID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS5wYXRjaEFuZEZldGNoQnlJZChpZCwge1xuICAgICAgICAuLi5wYXJhbXMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdXBkYXRlZGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxDYXRlZ29yeSgpIHtcbiAgICBjb25zdCBjYXRlZ29yeXMgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpO1xuICAgIHJldHVybiBjYXRlZ29yeXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFsbENvbXBhbnlDYXRlZ29yeXMocGFyYW1zKSB7XG4gICAgY29uc3QgY2F0ZWdvcnlzID0gYXdhaXQgQ2F0ZWdvcnkucXVlcnkoKS53aGVyZShwYXJhbXMpO1xuXG4gICAgaWYgKGNhdGVnb3J5cy5sZW5ndGggPCAxKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY2F0ZWdvcnlzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUJ5SWQoaWQpIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IGF3YWl0IGdldENhdGVnb3J5KHsgaWQgfSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5O1xufVxuXG5hc3luYyBmdW5jdGlvbiBfZGVsZXRlKHBhcmFtcykge1xuICAgIGF3YWl0IENhdGVnb3J5LnF1ZXJ5KClcbiAgICAgICAgLmRlbGV0ZSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KTtcbn1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENhdGVnb3J5KHBhcmFtKSB7XG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBDYXRlZ29yeS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIilcbiAgICAgICAgLmZpcnN0KCk7XG5cbiAgICByZXR1cm4gY2F0ZWdvcnk7XG59XG4iXX0=", "originalCode": "const Category = require(\"./category.model\");\nconst error = require(\"../../../../utils/error\");\n\nmodule.exports = {\n createCategory,\n updateCategory,\n getAllCategory,\n getAllCompanyCategorys,\n getCategoryById,\n _delete,\n};\n\nasync function createCategory(params) {\n const category = await Category.query().insert(params);\n return category;\n}\n\nasync function updateCategory(id, params) {\n const category = await getCategory({ id });\n //check if category name is duplicated\n if (\n params.name &&\n category.name !== params.name &&\n (await getCategory({\n name: params.name,\n menu_id: params.menu_id,\n }))\n ) {\n error(`Category ${params.name} already exists`);\n }\n const updatedcategory = await Category.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedcategory;\n}\n\nasync function getAllCategory() {\n const categorys = await Category.query();\n return categorys;\n}\n\nasync function getAllCompanyCategorys(params) {\n const categorys = await Category.query().where(params);\n\n if (categorys.length < 1) {\n return null;\n }\n return categorys;\n}\n\nasync function getCategoryById(id) {\n const category = await getCategory({ id });\n return category;\n}\n\nasync function _delete(params) {\n await Category.query()\n .delete()\n .where({ ...params });\n}\n\n// =========== helpers===========\n\nasync function getCategory(param) {\n const category = await Category.query()\n .where({ ...param })\n .withGraphFetched(\"items\")\n .first();\n\n return category;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/89/categoryservice_890ea46948200792f11f661d0d6b79f7.map", "wrapperLength": 89 }, "result": { "scriptId": "2962", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6622, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6619, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createCategory", "ranges": [ { "startOffset": 319, "endOffset": 437, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateCategory", "ranges": [ { "startOffset": 439, "endOffset": 884, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCategory", "ranges": [ { "startOffset": 886, "endOffset": 985, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyCategorys", "ranges": [ { "startOffset": 987, "endOffset": 1167, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategoryById", "ranges": [ { "startOffset": 1169, "endOffset": 1278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1280, "endOffset": 1372, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCategory", "ranges": [ { "startOffset": 1409, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../../db\");\n\nconst schema = require(\"./category.schema.json\");\n\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`\n }\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Category;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNhdGVnb3J5Lm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsImRiIiwic2NoZW1hIiwidGFibGVOYW1lcyIsIkNhdGVnb3J5IiwidGFibGVOYW1lIiwiY2F0ZWdvcnkiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIk1lbnUiLCJJdGVtIiwibWVudSIsInJlbGF0aW9uIiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJtb2RlbENsYXNzIiwiam9pbiIsImZyb20iLCJ0byIsIml0ZW1zIiwiSGFzTWFueVJlbGF0aW9uIiwiaXRlbSIsImtuZXgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBWUMsT0FBTyxDQUFDLFdBQUQsQ0FBekI7O0FBQ0EsTUFBTUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsZ0JBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsd0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsa0NBQUQsQ0FBMUI7O0FBRUEsTUFBTUksUUFBTixTQUF1QkwsS0FBdkIsQ0FBNkI7QUFDekIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLFFBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxlQUFELENBQXBCOztBQUNBLFVBQU1VLElBQUksR0FBR1YsT0FBTyxDQUFDLG1CQUFELENBQXBCOztBQUVBLFdBQU87QUFDSFcsTUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDYyxvQkFEZDtBQUVGQyxRQUFBQSxVQUFVLEVBQUVMLElBRlY7QUFHRk0sUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsVUFEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ1EsSUFBSztBQUZyQjtBQUhKLE9BREg7QUFTSE8sTUFBQUEsS0FBSyxFQUFFO0FBQ0hOLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDb0IsZUFEYjtBQUVITCxRQUFBQSxVQUFVLEVBQUVKLElBRlQ7QUFHSEssUUFBQUEsSUFBSSxFQUFFO0FBQ0ZDLFVBQUFBLElBQUksRUFBRyxHQUFFYixVQUFVLENBQUNHLFFBQVMsS0FEM0I7QUFFRlcsVUFBQUEsRUFBRSxFQUFHLEdBQUVkLFVBQVUsQ0FBQ2lCLElBQUs7QUFGckI7QUFISDtBQVRKLEtBQVA7QUFrQkg7O0FBaEN3Qjs7QUFtQzdCckIsS0FBSyxDQUFDc0IsSUFBTixDQUFXcEIsRUFBWDtBQUVBcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCbkIsUUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCB7IE1vZGVsIH0gPSByZXF1aXJlKFwib2JqZWN0aW9uXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9jYXRlZ29yeS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIENhdGVnb3J5IGV4dGVuZHMgTW9kZWwge1xuICAgIHN0YXRpYyBnZXQgdGFibGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGFibGVOYW1lcy5jYXRlZ29yeTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IGpzb25TY2hlbWEoKSB7XG4gICAgICAgIHJldHVybiBzY2hlbWE7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCByZWxhdGlvbk1hcHBpbmdzKCkge1xuICAgICAgICAvLyBJbXBvcnRpbmcgbW9kZWxzIGhlcmUgaXMgYSBvbmUgd2F5IHRvIGF2b2lkIHJlcXVpcmUgbG9vcHMuXG4gICAgICAgIGNvbnN0IE1lbnUgPSByZXF1aXJlKFwiLi4vbWVudS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgSXRlbSA9IHJlcXVpcmUoXCIuL2l0ZW0vaXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWVudToge1xuICAgICAgICAgICAgICAgIHJlbGF0aW9uOiBNb2RlbC5CZWxvbmdzVG9PbmVSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBNZW51LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0ubWVudV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLm1lbnV9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGl0ZW1zOiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkhhc01hbnlSZWxhdGlvbixcbiAgICAgICAgICAgICAgICBtb2RlbENsYXNzOiBJdGVtLFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5jYXRlZ29yeX0uaWRgLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7dGFibGVOYW1lcy5pdGVtfS5jYXRlZ29yeV9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufVxuXG5Nb2RlbC5rbmV4KGRiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBDYXRlZ29yeTtcbiJdfQ==", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../../db\");\nconst schema = require(\"./category.schema.json\");\nconst tableNames = require(\"../../../../constants/tableNames\");\n\nclass Category extends Model {\n static get tableName() {\n return tableNames.category;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Menu = require(\"../menu.model\");\n const Item = require(\"./item/item.model\");\n\n return {\n menu: {\n relation: Model.BelongsToOneRelation,\n modelClass: Menu,\n join: {\n from: `${tableNames.category}.menu_id`,\n to: `${tableNames.menu}.id`,\n },\n },\n items: {\n relation: Model.HasManyRelation,\n modelClass: Item,\n join: {\n from: `${tableNames.category}.id`,\n to: `${tableNames.item}.category_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Category;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/c4/categorymodel_c4d095e115e69c752e6bdb395a080788.map", "wrapperLength": 89 }, "result": { "scriptId": "2963", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4639, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4636, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Category", "ranges": [ { "startOffset": 287, "endOffset": 287, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 327, "endOffset": 380, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 391, "endOffset": 432, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 443, "endOffset": 1066, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Menu = require(\"../menu/menu.model\");\n\nconst error = require(\"../../../utils/error\");\n\nconst {\n menu\n} = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, { ...params\n });\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query().where({ ...params\n }).withGraphFetched(\"categories\");\n return menus.map(x => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({\n id\n });\n\n if (!menu) {\n return null;\n }\n\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query().delete().where({ ...queryParams\n });\n} // async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n// }\n// =========== helpers===========\n\n\nasync function getMenu(param) {\n const menu = await Menu.query().where({ ...param\n }).withGraphFetched(\"categories\").first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const {\n id,\n name,\n company_id,\n categories\n } = menu;\n return {\n id,\n name,\n company_id,\n categories\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUuc2VydmljZS5qcyJdLCJuYW1lcyI6WyJNZW51IiwicmVxdWlyZSIsImVycm9yIiwibWVudSIsIm1vZHVsZSIsImV4cG9ydHMiLCJjcmVhdGVNZW51IiwidXBkYXRlTWVudSIsImdldEFsbE1lbnUiLCJnZXRBbGxDb21wYW55TWVudXMiLCJnZXRNZW51QnlJZCIsIl9kZWxldGUiLCJwYXJhbXMiLCJxdWVyeSIsImluc2VydCIsImlkIiwidXBkYXRlZG1lbnUiLCJwYXRjaEFuZEZldGNoQnlJZCIsIm1lbnVzIiwid2hlcmUiLCJ3aXRoR3JhcGhGZXRjaGVkIiwibWFwIiwieCIsImJhc2ljRGV0YWlscyIsImdldE1lbnUiLCJxdWVyeVBhcmFtcyIsImRlbGV0ZSIsInBhcmFtIiwiZmlyc3QiLCJuYW1lIiwiY29tcGFueV9pZCIsImNhdGVnb3JpZXMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLElBQUksR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXBCOztBQUNBLE1BQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDLHNCQUFELENBQXJCOztBQUNBLE1BQU07QUFBRUUsRUFBQUE7QUFBRixJQUFXRixPQUFPLENBQUMsK0JBQUQsQ0FBeEI7O0FBRUFHLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQjtBQUNiQyxFQUFBQSxVQURhO0FBRWJDLEVBQUFBLFVBRmE7QUFHYkMsRUFBQUEsVUFIYTtBQUliQyxFQUFBQSxrQkFKYTtBQUtiQyxFQUFBQSxXQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsVUFBZixDQUEwQk0sTUFBMUIsRUFBa0M7QUFDOUIsUUFBTVQsSUFBSSxHQUFHLE1BQU1ILElBQUksQ0FBQ2EsS0FBTCxHQUFhQyxNQUFiLENBQW9CRixNQUFwQixDQUFuQjtBQUNBLFNBQU9ULElBQVA7QUFDSDs7QUFFRCxlQUFlSSxVQUFmLENBQTBCUSxFQUExQixFQUE4QkgsTUFBOUIsRUFBc0M7QUFDbEMsUUFBTUksV0FBVyxHQUFHLE1BQU1oQixJQUFJLENBQUNhLEtBQUwsR0FBYUksaUJBQWIsQ0FBK0JGLEVBQS9CLEVBQW1DLEVBQ3pELEdBQUdIO0FBRHNELEdBQW5DLENBQTFCO0FBSUEsU0FBT0ksV0FBUDtBQUNIOztBQUVELGVBQWVSLFVBQWYsR0FBNEI7QUFDeEIsUUFBTVUsS0FBSyxHQUFHLE1BQU1sQixJQUFJLENBQUNhLEtBQUwsRUFBcEI7QUFDQSxTQUFPSyxLQUFQO0FBQ0g7O0FBRUQsZUFBZVQsa0JBQWYsQ0FBa0NHLE1BQWxDLEVBQTBDO0FBQ3RDLFFBQU1NLEtBQUssR0FBRyxNQUFNbEIsSUFBSSxDQUFDYSxLQUFMLEdBQ2ZNLEtBRGUsQ0FDVCxFQUFFLEdBQUdQO0FBQUwsR0FEUyxFQUVmUSxnQkFGZSxDQUVFLFlBRkYsQ0FBcEI7QUFHQSxTQUFPRixLQUFLLENBQUNHLEdBQU4sQ0FBV0MsQ0FBRCxJQUFPQyxZQUFZLENBQUNELENBQUQsQ0FBN0IsQ0FBUDtBQUNIOztBQUVELGVBQWVaLFdBQWYsQ0FBMkJLLEVBQTNCLEVBQStCO0FBQzNCLFFBQU1aLElBQUksR0FBRyxNQUFNcUIsT0FBTyxDQUFDO0FBQUVULElBQUFBO0FBQUYsR0FBRCxDQUExQjs7QUFDQSxNQUFJLENBQUNaLElBQUwsRUFBVztBQUNQLFdBQU8sSUFBUDtBQUNIOztBQUNELFNBQU9vQixZQUFZLENBQUNwQixJQUFELENBQW5CO0FBQ0g7O0FBRUQsZUFBZVEsT0FBZixDQUF1QmMsV0FBdkIsRUFBb0M7QUFDaEMsUUFBTXpCLElBQUksQ0FBQ2EsS0FBTCxHQUNEYSxNQURDLEdBRURQLEtBRkMsQ0FFSyxFQUFFLEdBQUdNO0FBQUwsR0FGTCxDQUFOO0FBR0gsQyxDQUVEO0FBQ0E7QUFDQTtBQUVBO0FBRUE7OztBQUVBLGVBQWVELE9BQWYsQ0FBdUJHLEtBQXZCLEVBQThCO0FBQzFCLFFBQU14QixJQUFJLEdBQUcsTUFBTUgsSUFBSSxDQUFDYSxLQUFMLEdBQ2RNLEtBRGMsQ0FDUixFQUFFLEdBQUdRO0FBQUwsR0FEUSxFQUVkUCxnQkFGYyxDQUVHLFlBRkgsRUFHZFEsS0FIYyxFQUFuQjtBQUlBLFNBQU96QixJQUFQO0FBQ0g7O0FBRUQsU0FBU29CLFlBQVQsQ0FBc0JwQixJQUF0QixFQUE0QjtBQUN4QixRQUFNO0FBQUVZLElBQUFBLEVBQUY7QUFBTWMsSUFBQUEsSUFBTjtBQUFZQyxJQUFBQSxVQUFaO0FBQXdCQyxJQUFBQTtBQUF4QixNQUF1QzVCLElBQTdDO0FBRUEsU0FBTztBQUFFWSxJQUFBQSxFQUFGO0FBQU1jLElBQUFBLElBQU47QUFBWUMsSUFBQUEsVUFBWjtBQUF3QkMsSUFBQUE7QUFBeEIsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgTWVudSA9IHJlcXVpcmUoXCIuLi9tZW51L21lbnUubW9kZWxcIik7XG5jb25zdCBlcnJvciA9IHJlcXVpcmUoXCIuLi8uLi8uLi91dGlscy9lcnJvclwiKTtcbmNvbnN0IHsgbWVudSB9ID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVNZW51LFxuICAgIHVwZGF0ZU1lbnUsXG4gICAgZ2V0QWxsTWVudSxcbiAgICBnZXRBbGxDb21wYW55TWVudXMsXG4gICAgZ2V0TWVudUJ5SWQsXG4gICAgX2RlbGV0ZSxcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZU1lbnUocGFyYW1zKSB7XG4gICAgY29uc3QgbWVudSA9IGF3YWl0IE1lbnUucXVlcnkoKS5pbnNlcnQocGFyYW1zKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWVudShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3QgdXBkYXRlZG1lbnUgPSBhd2FpdCBNZW51LnF1ZXJ5KCkucGF0Y2hBbmRGZXRjaEJ5SWQoaWQsIHtcbiAgICAgICAgLi4ucGFyYW1zLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRtZW51O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBbGxNZW51KCkge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpO1xuICAgIHJldHVybiBtZW51cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWxsQ29tcGFueU1lbnVzKHBhcmFtcykge1xuICAgIGNvbnN0IG1lbnVzID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtcyB9KVxuICAgICAgICAud2l0aEdyYXBoRmV0Y2hlZChcImNhdGVnb3JpZXNcIik7XG4gICAgcmV0dXJuIG1lbnVzLm1hcCgoeCkgPT4gYmFzaWNEZXRhaWxzKHgpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TWVudUJ5SWQoaWQpIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgZ2V0TWVudSh7IGlkIH0pO1xuICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2ljRGV0YWlscyhtZW51KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2RlbGV0ZShxdWVyeVBhcmFtcykge1xuICAgIGF3YWl0IE1lbnUucXVlcnkoKVxuICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgLndoZXJlKHsgLi4ucXVlcnlQYXJhbXMgfSk7XG59XG5cbi8vIGFzeW5jIGZ1bmN0aW9uIF9zb2Z0RGVsZXRlKGlkKSB7XG4vL21hcmsgYXMgaW5hY3RpdmVcbi8vICBhd2FpdCBtZW51LnF1ZXJ5KCkuZGVsZXRlQnlJZChpZCk7XG5cbi8vIH1cblxuLy8gPT09PT09PT09PT0gaGVscGVycz09PT09PT09PT09XG5cbmFzeW5jIGZ1bmN0aW9uIGdldE1lbnUocGFyYW0pIHtcbiAgICBjb25zdCBtZW51ID0gYXdhaXQgTWVudS5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IC4uLnBhcmFtIH0pXG4gICAgICAgIC53aXRoR3JhcGhGZXRjaGVkKFwiY2F0ZWdvcmllc1wiKVxuICAgICAgICAuZmlyc3QoKTtcbiAgICByZXR1cm4gbWVudTtcbn1cblxuZnVuY3Rpb24gYmFzaWNEZXRhaWxzKG1lbnUpIHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCBjb21wYW55X2lkLCBjYXRlZ29yaWVzIH0gPSBtZW51O1xuXG4gICAgcmV0dXJuIHsgaWQsIG5hbWUsIGNvbXBhbnlfaWQsIGNhdGVnb3JpZXMgfTtcbn1cbiJdfQ==", "originalCode": "const Menu = require(\"../menu/menu.model\");\nconst error = require(\"../../../utils/error\");\nconst { menu } = require(\"../../../constants/tableNames\");\n\nmodule.exports = {\n createMenu,\n updateMenu,\n getAllMenu,\n getAllCompanyMenus,\n getMenuById,\n _delete,\n};\n\nasync function createMenu(params) {\n const menu = await Menu.query().insert(params);\n return menu;\n}\n\nasync function updateMenu(id, params) {\n const updatedmenu = await Menu.query().patchAndFetchById(id, {\n ...params,\n });\n\n return updatedmenu;\n}\n\nasync function getAllMenu() {\n const menus = await Menu.query();\n return menus;\n}\n\nasync function getAllCompanyMenus(params) {\n const menus = await Menu.query()\n .where({ ...params })\n .withGraphFetched(\"categories\");\n return menus.map((x) => basicDetails(x));\n}\n\nasync function getMenuById(id) {\n const menu = await getMenu({ id });\n if (!menu) {\n return null;\n }\n return basicDetails(menu);\n}\n\nasync function _delete(queryParams) {\n await Menu.query()\n .delete()\n .where({ ...queryParams });\n}\n\n// async function _softDelete(id) {\n//mark as inactive\n// await menu.query().deleteById(id);\n\n// }\n\n// =========== helpers===========\n\nasync function getMenu(param) {\n const menu = await Menu.query()\n .where({ ...param })\n .withGraphFetched(\"categories\")\n .first();\n return menu;\n}\n\nfunction basicDetails(menu) {\n const { id, name, company_id, categories } = menu;\n\n return { id, name, company_id, categories };\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/6e/menuservice_6e9dfc28daaf137278aca6ef9d6dc9d8.map", "wrapperLength": 89 }, "result": { "scriptId": "2964", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 6594, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 6591, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createMenu", "ranges": [ { "startOffset": 356, "endOffset": 458, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateMenu", "ranges": [ { "startOffset": 460, "endOffset": 604, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllMenu", "ranges": [ { "startOffset": 606, "endOffset": 689, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getAllCompanyMenus", "ranges": [ { "startOffset": 691, "endOffset": 868, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenuById", "ranges": [ { "startOffset": 870, "endOffset": 1015, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "_delete", "ranges": [ { "startOffset": 1017, "endOffset": 1115, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getMenu", "ranges": [ { "startOffset": 1251, "endOffset": 1395, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "basicDetails", "ranges": [ { "startOffset": 1397, "endOffset": 1564, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./menu.schema.json\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`\n }\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Menu;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1lbnUubW9kZWwuanMiXSwibmFtZXMiOlsiTW9kZWwiLCJyZXF1aXJlIiwiZGIiLCJzY2hlbWEiLCJ0YWJsZU5hbWVzIiwiTWVudSIsInRhYmxlTmFtZSIsIm1lbnUiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJDYXRlZ29yeSIsImNvbXBhbnkiLCJyZWxhdGlvbiIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJjYXRlZ29yaWVzIiwiSGFzTWFueVJlbGF0aW9uIiwiY2F0ZWdvcnkiLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLEVBQUUsR0FBR0QsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUUsTUFBTSxHQUFHRixPQUFPLENBQUMsb0JBQUQsQ0FBdEI7O0FBQ0EsTUFBTUcsVUFBVSxHQUFHSCxPQUFPLENBQUMsK0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUksSUFBTixTQUFtQkwsS0FBbkIsQ0FBeUI7QUFDckIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPRixVQUFVLENBQUNHLElBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPTCxNQUFQO0FBQ0g7O0FBRUQsYUFBV00sZ0JBQVgsR0FBOEI7QUFDMUI7QUFDQSxVQUFNQyxPQUFPLEdBQUdULE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxVQUFNVSxRQUFRLEdBQUdWLE9BQU8sQ0FBQywyQkFBRCxDQUF4Qjs7QUFFQSxXQUFPO0FBQ0hXLE1BQUFBLE9BQU8sRUFBRTtBQUNMQyxRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ2Msb0JBRFg7QUFFTEMsUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLGFBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNRLE9BQVE7QUFGeEI7QUFIRCxPQUROO0FBU0hPLE1BQUFBLFVBQVUsRUFBRTtBQUNSTixRQUFBQSxRQUFRLEVBQUViLEtBQUssQ0FBQ29CLGVBRFI7QUFFUkwsUUFBQUEsVUFBVSxFQUFFSixRQUZKO0FBR1JLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWIsVUFBVSxDQUFDRyxJQUFLLEtBRHZCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFZCxVQUFVLENBQUNpQixRQUFTO0FBRnpCO0FBSEU7QUFUVCxLQUFQO0FBa0JIOztBQWhDb0I7O0FBbUN6QnJCLEtBQUssQ0FBQ3NCLElBQU4sQ0FBV3BCLEVBQVg7QUFFQXFCLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQm5CLElBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgeyBNb2RlbCB9ID0gcmVxdWlyZShcIm9iamVjdGlvblwiKTtcbmNvbnN0IGRiID0gcmVxdWlyZShcIi4uLy4uLy4uL2RiXCIpO1xuY29uc3Qgc2NoZW1hID0gcmVxdWlyZShcIi4vbWVudS5zY2hlbWEuanNvblwiKTtcbmNvbnN0IHRhYmxlTmFtZXMgPSByZXF1aXJlKFwiLi4vLi4vLi4vY29uc3RhbnRzL3RhYmxlTmFtZXNcIik7XG5cbmNsYXNzIE1lbnUgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm1lbnU7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldCBqc29uU2NoZW1hKCkge1xuICAgICAgICByZXR1cm4gc2NoZW1hO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQgcmVsYXRpb25NYXBwaW5ncygpIHtcbiAgICAgICAgLy8gSW1wb3J0aW5nIG1vZGVscyBoZXJlIGlzIGEgb25lIHdheSB0byBhdm9pZCByZXF1aXJlIGxvb3BzLlxuICAgICAgICBjb25zdCBDb21wYW55ID0gcmVxdWlyZShcIi4uL2NvbXBhbnkubW9kZWxcIik7XG4gICAgICAgIGNvbnN0IENhdGVnb3J5ID0gcmVxdWlyZShcIi4vY2F0ZWdvcnkvY2F0ZWdvcnkubW9kZWxcIik7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvbXBhbnk6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuQmVsb25nc1RvT25lUmVsYXRpb24sXG4gICAgICAgICAgICAgICAgbW9kZWxDbGFzczogQ29tcGFueSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMubWVudX0uY29tcGFueV9pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNvbXBhbnl9LmlkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENhdGVnb3J5LFxuICAgICAgICAgICAgICAgIGpvaW46IHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7dGFibGVOYW1lcy5tZW51fS5pZGAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHt0YWJsZU5hbWVzLmNhdGVnb3J5fS5tZW51X2lkYCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbk1vZGVsLmtuZXgoZGIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1lbnU7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./menu.schema.json\");\nconst tableNames = require(\"../../../constants/tableNames\");\n\nclass Menu extends Model {\n static get tableName() {\n return tableNames.menu;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n // Importing models here is a one way to avoid require loops.\n const Company = require(\"../company.model\");\n const Category = require(\"./category/category.model\");\n\n return {\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.menu}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n categories: {\n relation: Model.HasManyRelation,\n modelClass: Category,\n join: {\n from: `${tableNames.menu}.id`,\n to: `${tableNames.category}.menu_id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Menu;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/3e/menumodel_3e585995a7771ed1d7b6448514c83496.map", "wrapperLength": 89 }, "result": { "scriptId": "2965", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4668, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4665, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Menu", "ranges": [ { "startOffset": 277, "endOffset": 277, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 313, "endOffset": 362, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 373, "endOffset": 414, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 425, "endOffset": 1079, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema\n} = require(\"./order.validators\");\n\nconst {\n auth: Auth,\n isOwner\n} = require(\"../../../_middlewares/auth\");\n\nconst Role = require(\"../../../utils/role\");\n\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.use(\"/:order_id/orderItem\", OrderItem); // update an order item customer aka update cart item\n\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\"/:id\", updateOrderSchema, Auth([Role.staff, Role.owner]), updateOrder);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\"/company-orders\", companyOrderSchema, Auth([Role.owner, Role.staff]), isOwner(), getCompanyOrders);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity)\n };\n orderService.createOrder(payload).then(orderItem => res.json({\n message: `${orderItem.item} has been added to the cart`\n })).catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService.updateOrder(req.params.id, req.user, req.body).then(order => res.json(order)).catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService.getOrderById(id).then(order => order ? res.json(order) : res.sendStatus(404)).catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService.getOwnOrders(req.user.id).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n params.company_id = req.params.company_id;\n orderService.getCompanyOrders(params).then(orders => orders.length > 0 ? orders : res.sendStatus(404)).catch(next);\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnJvdXRlcy5qcyJdLCJuYW1lcyI6WyJleHByZXNzIiwicmVxdWlyZSIsImNyZWF0ZU9yZGVyU2NoZW1hIiwidXBkYXRlT3JkZXJTY2hlbWEiLCJjb21wYW55T3JkZXJTY2hlbWEiLCJhdXRoIiwiQXV0aCIsImlzT3duZXIiLCJSb2xlIiwib3JkZXJTZXJ2aWNlIiwiT3JkZXJJdGVtIiwicm91dGVyIiwiUm91dGVyIiwibWVyZ2VQYXJhbXMiLCJ1c2UiLCJwb3N0IiwiY3JlYXRlT3JkZXIiLCJwYXRjaCIsInN0YWZmIiwib3duZXIiLCJ1cGRhdGVPcmRlciIsImdldCIsImdldE9yZGVyQnlJZCIsImN1c3RvbWVyIiwiZ2V0T3duT3JkZXJzIiwiZ2V0Q29tcGFueU9yZGVycyIsInJlcSIsInJlcyIsIm5leHQiLCJwYXlsb2FkIiwiY2FydF9pZCIsImJvZHkiLCJjb21wYW55X2lkIiwicGFyc2VJbnQiLCJwYXJhbXMiLCJwcm9kdWN0X2lkIiwicXVhbnRpdHkiLCJ0aGVuIiwib3JkZXJJdGVtIiwianNvbiIsIm1lc3NhZ2UiLCJpdGVtIiwiY2F0Y2giLCJpZCIsInVzZXIiLCJvcmRlciIsInNlbmRTdGF0dXMiLCJvcmRlcnMiLCJsZW5ndGgiLCJtb2R1bGUiLCJleHBvcnRzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxPQUFPLEdBQUdDLE9BQU8sQ0FBQyxTQUFELENBQXZCOztBQUNBLE1BQU07QUFDRkMsRUFBQUEsaUJBREU7QUFFRkMsRUFBQUEsaUJBRkU7QUFHRkMsRUFBQUE7QUFIRSxJQUlGSCxPQUFPLENBQUMsb0JBQUQsQ0FKWDs7QUFLQSxNQUFNO0FBQUVJLEVBQUFBLElBQUksRUFBRUMsSUFBUjtBQUFjQyxFQUFBQTtBQUFkLElBQTBCTixPQUFPLENBQUMsNEJBQUQsQ0FBdkM7O0FBQ0EsTUFBTU8sSUFBSSxHQUFHUCxPQUFPLENBQUMscUJBQUQsQ0FBcEI7O0FBQ0EsTUFBTVEsWUFBWSxHQUFHUixPQUFPLENBQUMsaUJBQUQsQ0FBNUI7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QixJQUFKLENBQVNELEVBRDNCLEVBRUtOLElBRkwsQ0FFV1UsTUFBRCxJQUFhQSxNQUFNLENBQUNDLE1BQVAsR0FBZ0IsQ0FBaEIsR0FBb0JELE1BQXBCLEdBQTZCcEIsR0FBRyxDQUFDbUIsVUFBSixDQUFlLEdBQWYsQ0FGcEQsRUFHS0osS0FITCxDQUdXZCxJQUhYO0FBSUg7O0FBRUQsU0FBU0gsZ0JBQVQsQ0FBMEJDLEdBQTFCLEVBQStCQyxHQUEvQixFQUFvQ0MsSUFBcEMsRUFBMEM7QUFDdEM7QUFFQU0sRUFBQUEsTUFBTSxDQUFDRixVQUFQLEdBQW9CTixHQUFHLENBQUNRLE1BQUosQ0FBV0YsVUFBL0I7QUFDQXZCLEVBQUFBLFlBQVksQ0FDUGdCLGdCQURMLENBQ3NCUyxNQUR0QixFQUVLRyxJQUZMLENBRVdVLE1BQUQsSUFBYUEsTUFBTSxDQUFDQyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CRCxNQUFwQixHQUE2QnBCLEdBQUcsQ0FBQ21CLFVBQUosQ0FBZSxHQUFmLENBRnBELEVBR0tKLEtBSEwsQ0FHV2QsSUFIWDtBQUlIOztBQUNEcUIsTUFBTSxDQUFDQyxPQUFQLEdBQWlCdkMsTUFBakIiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBleHByZXNzID0gcmVxdWlyZShcImV4cHJlc3NcIik7XG5jb25zdCB7XG4gICAgY3JlYXRlT3JkZXJTY2hlbWEsXG4gICAgdXBkYXRlT3JkZXJTY2hlbWEsXG4gICAgY29tcGFueU9yZGVyU2NoZW1hLFxufSA9IHJlcXVpcmUoXCIuL29yZGVyLnZhbGlkYXRvcnNcIik7XG5jb25zdCB7IGF1dGg6IEF1dGgsIGlzT3duZXIgfSA9IHJlcXVpcmUoXCIuLi8uLi8uLi9fbWlkZGxld2FyZXMvYXV0aFwiKTtcbmNvbnN0IFJvbGUgPSByZXF1aXJlKFwiLi4vLi4vLi4vdXRpbHMvcm9sZVwiKTtcbmNvbnN0IG9yZGVyU2VydmljZSA9IHJlcXVpcmUoXCIuL29yZGVyLnNlcnZpY2VcIik7XG5cbmNvbnN0IE9yZGVySXRlbSA9IHJlcXVpcmUoXCIuL29yZGVySXRlbS9vcmRlckl0ZW0ucm91dGVzXCIpO1xuXG5jb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcih7XG4gICAgbWVyZ2VQYXJhbXM6IHRydWUsXG59KTtcblxucm91dGVyLnVzZShcIi86b3JkZXJfaWQvb3JkZXJJdGVtXCIsIE9yZGVySXRlbSk7XG5cbi8vIHVwZGF0ZSBhbiBvcmRlciBpdGVtIGN1c3RvbWVyIGFrYSB1cGRhdGUgY2FydCBpdGVtXG5yb3V0ZXIucG9zdChcIi9cIiwgY3JlYXRlT3JkZXJTY2hlbWEsIGNyZWF0ZU9yZGVyKTtcbnJvdXRlci5wYXRjaChcbiAgICBcIi86aWRcIixcbiAgICB1cGRhdGVPcmRlclNjaGVtYSxcbiAgICBBdXRoKFtSb2xlLnN0YWZmLCBSb2xlLm93bmVyXSksXG4gICAgdXBkYXRlT3JkZXJcbik7XG5yb3V0ZXIuZ2V0KFwiLzppZFwiLCBBdXRoKCksIGdldE9yZGVyQnlJZCk7XG5yb3V0ZXIuZ2V0KFwiLzppZC9teS1vcmRlcnNcIiwgQXV0aChSb2xlLmN1c3RvbWVyKSwgZ2V0T3duT3JkZXJzKTtcbnJvdXRlci5nZXQoXG4gICAgXCIvY29tcGFueS1vcmRlcnNcIixcbiAgICBjb21wYW55T3JkZXJTY2hlbWEsXG4gICAgQXV0aChbUm9sZS5vd25lciwgUm9sZS5zdGFmZl0pLFxuICAgIGlzT3duZXIoKSxcbiAgICBnZXRDb21wYW55T3JkZXJzXG4pO1xuXG5mdW5jdGlvbiBjcmVhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICAgIGNhcnRfaWQ6IHJlcS5ib2R5LmNhcnRfaWQsXG4gICAgICAgIGNvbXBhbnlfaWQ6IHBhcnNlSW50KHJlcS5wYXJhbXMuY29tcGFueV9pZCksXG4gICAgICAgIHByb2R1Y3RfaWQ6IHBhcnNlSW50KHJlcS5ib2R5LnByb2R1Y3RfaWQpLFxuICAgICAgICBxdWFudGl0eTogcGFyc2VJbnQocmVxLmJvZHkucXVhbnRpdHkpLFxuICAgIH07XG5cbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmNyZWF0ZU9yZGVyKHBheWxvYWQpXG4gICAgICAgIC50aGVuKChvcmRlckl0ZW0pID0+XG4gICAgICAgICAgICByZXMuanNvbih7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogYCR7b3JkZXJJdGVtLml0ZW19IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBjYXJ0YCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVPcmRlcihyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZVxuICAgICAgICAudXBkYXRlT3JkZXIocmVxLnBhcmFtcy5pZCwgcmVxLnVzZXIsIHJlcS5ib2R5KVxuICAgICAgICAudGhlbigob3JkZXIpID0+IHJlcy5qc29uKG9yZGVyKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPcmRlckJ5SWQocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE9yZGVyQnlJZChpZClcbiAgICAgICAgLnRoZW4oKG9yZGVyKSA9PiAob3JkZXIgPyByZXMuanNvbihvcmRlcikgOiByZXMuc2VuZFN0YXR1cyg0MDQpKSlcbiAgICAgICAgLmNhdGNoKG5leHQpO1xufVxuXG5mdW5jdGlvbiBnZXRPd25PcmRlcnMocmVxLCByZXMsIG5leHQpIHtcbiAgICBvcmRlclNlcnZpY2VcbiAgICAgICAgLmdldE93bk9yZGVycyhyZXEudXNlci5pZClcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cblxuZnVuY3Rpb24gZ2V0Q29tcGFueU9yZGVycyhyZXEsIHJlcywgbmV4dCkge1xuICAgIC8vIFRPRE8gdG8gdXNlIHF1ZXJ5IHBhcmFtc1xuXG4gICAgcGFyYW1zLmNvbXBhbnlfaWQgPSByZXEucGFyYW1zLmNvbXBhbnlfaWQ7XG4gICAgb3JkZXJTZXJ2aWNlXG4gICAgICAgIC5nZXRDb21wYW55T3JkZXJzKHBhcmFtcylcbiAgICAgICAgLnRoZW4oKG9yZGVycykgPT4gKG9yZGVycy5sZW5ndGggPiAwID8gb3JkZXJzIDogcmVzLnNlbmRTdGF0dXMoNDA0KSkpXG4gICAgICAgIC5jYXRjaChuZXh0KTtcbn1cbm1vZHVsZS5leHBvcnRzID0gcm91dGVyO1xuIl19", "originalCode": "const express = require(\"express\");\nconst {\n createOrderSchema,\n updateOrderSchema,\n companyOrderSchema,\n} = require(\"./order.validators\");\nconst { auth: Auth, isOwner } = require(\"../../../_middlewares/auth\");\nconst Role = require(\"../../../utils/role\");\nconst orderService = require(\"./order.service\");\n\nconst OrderItem = require(\"./orderItem/orderItem.routes\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.use(\"/:order_id/orderItem\", OrderItem);\n\n// update an order item customer aka update cart item\nrouter.post(\"/\", createOrderSchema, createOrder);\nrouter.patch(\n \"/:id\",\n updateOrderSchema,\n Auth([Role.staff, Role.owner]),\n updateOrder\n);\nrouter.get(\"/:id\", Auth(), getOrderById);\nrouter.get(\"/:id/my-orders\", Auth(Role.customer), getOwnOrders);\nrouter.get(\n \"/company-orders\",\n companyOrderSchema,\n Auth([Role.owner, Role.staff]),\n isOwner(),\n getCompanyOrders\n);\n\nfunction createOrder(req, res, next) {\n const payload = {\n cart_id: req.body.cart_id,\n company_id: parseInt(req.params.company_id),\n product_id: parseInt(req.body.product_id),\n quantity: parseInt(req.body.quantity),\n };\n\n orderService\n .createOrder(payload)\n .then((orderItem) =>\n res.json({\n message: `${orderItem.item} has been added to the cart`,\n })\n )\n .catch(next);\n}\n\nfunction updateOrder(req, res, next) {\n orderService\n .updateOrder(req.params.id, req.user, req.body)\n .then((order) => res.json(order))\n .catch(next);\n}\n\nfunction getOrderById(req, res, next) {\n orderService\n .getOrderById(id)\n .then((order) => (order ? res.json(order) : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getOwnOrders(req, res, next) {\n orderService\n .getOwnOrders(req.user.id)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\n\nfunction getCompanyOrders(req, res, next) {\n // TODO to use query params\n\n params.company_id = req.params.company_id;\n orderService\n .getCompanyOrders(params)\n .then((orders) => (orders.length > 0 ? orders : res.sendStatus(404)))\n .catch(next);\n}\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/08/orderroutes_089ea1023d544595b49b0cc5a337bfcb.map", "wrapperLength": 89 }, "result": { "scriptId": "2966", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 9628, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 9625, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 979, "endOffset": 1357, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1359, "endOffset": 1505, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1507, "endOffset": 1654, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1656, "endOffset": 1816, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1818, "endOffset": 2056, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Joi = require(\"joi\");\n\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required()\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\")\n });\n validateRequest(req, next, schema);\n};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnZhbGlkYXRvcnMuanMiXSwibmFtZXMiOlsiSm9pIiwicmVxdWlyZSIsInZhbGlkYXRlUmVxdWVzdCIsImV4cG9ydHMiLCJjcmVhdGVPcmRlclNjaGVtYSIsInJlcSIsInJlcyIsIm5leHQiLCJzY2hlbWEiLCJvYmplY3QiLCJwcm9kdWN0X2lkIiwibnVtYmVyIiwicmVxdWlyZWQiLCJxdWFudGl0eSIsImNhcnRfaWQiLCJzdHJpbmciLCJ1cGRhdGVPcmRlclNjaGVtYSIsIm9yZGVyX3N0YXR1cyIsImVtcHR5IiwicHVyY2hhc2Vfc3RhdHVzIiwiY29tcGFueU9yZGVyU2NoZW1hIiwiY3VzdG9tZXJfaWQiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLEdBQUcsR0FBR0MsT0FBTyxDQUFDLEtBQUQsQ0FBbkI7O0FBQ0EsTUFBTUMsZUFBZSxHQUFHRCxPQUFPLENBQUMsdUNBQUQsQ0FBL0I7O0FBRUFFLE9BQU8sQ0FBQ0MsaUJBQVIsR0FBNEIsQ0FBQ0MsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDNUMsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QkMsSUFBQUEsVUFBVSxFQUFFVixHQUFHLENBQUNXLE1BQUosR0FBYUMsUUFBYixFQURVO0FBRXRCQyxJQUFBQSxRQUFRLEVBQUViLEdBQUcsQ0FBQ1csTUFBSixHQUFhQyxRQUFiLEVBRlk7QUFHdEJFLElBQUFBLE9BQU8sRUFBRWQsR0FBRyxDQUFDZSxNQUFKLEdBQWFILFFBQWI7QUFIYSxHQUFYLENBQWY7QUFLQVYsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDYSxpQkFBUixHQUE0QixDQUFDWCxHQUFELEVBQU1DLEdBQU4sRUFBV0MsSUFBWCxLQUFvQjtBQUM1QyxRQUFNQyxNQUFNLEdBQUdSLEdBQUcsQ0FBQ1MsTUFBSixDQUFXO0FBQ3RCUSxJQUFBQSxZQUFZLEVBQUVqQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQixDQURRO0FBRXRCQyxJQUFBQSxlQUFlLEVBQUVuQixHQUFHLENBQUNlLE1BQUosR0FBYUcsS0FBYixDQUFtQixFQUFuQjtBQUZLLEdBQVgsQ0FBZjtBQUtBaEIsRUFBQUEsZUFBZSxDQUFDRyxHQUFELEVBQU1FLElBQU4sRUFBWUMsTUFBWixDQUFmO0FBQ0gsQ0FQRDs7QUFTQUwsT0FBTyxDQUFDaUIsa0JBQVIsR0FBNkIsQ0FBQ2YsR0FBRCxFQUFNQyxHQUFOLEVBQVdDLElBQVgsS0FBb0I7QUFDN0MsUUFBTUMsTUFBTSxHQUFHUixHQUFHLENBQUNTLE1BQUosQ0FBVztBQUN0QlksSUFBQUEsV0FBVyxFQUFFckIsR0FBRyxDQUFDVyxNQUFKLEdBQWFPLEtBQWIsRUFEUztBQUV0QkQsSUFBQUEsWUFBWSxFQUFFakIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkIsQ0FGUTtBQUd0QkMsSUFBQUEsZUFBZSxFQUFFbkIsR0FBRyxDQUFDZSxNQUFKLEdBQWFHLEtBQWIsQ0FBbUIsRUFBbkI7QUFISyxHQUFYLENBQWY7QUFNQWhCLEVBQUFBLGVBQWUsQ0FBQ0csR0FBRCxFQUFNRSxJQUFOLEVBQVlDLE1BQVosQ0FBZjtBQUNILENBUkQiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBKb2kgPSByZXF1aXJlKFwiam9pXCIpO1xuY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0gcmVxdWlyZShcIi4uLy4uLy4uL19taWRkbGV3YXJlcy92YWxpZGF0ZVJlcXVlc3RcIik7XG5cbmV4cG9ydHMuY3JlYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgcHJvZHVjdF9pZDogSm9pLm51bWJlcigpLnJlcXVpcmVkKCksXG4gICAgICAgIHF1YW50aXR5OiBKb2kubnVtYmVyKCkucmVxdWlyZWQoKSxcbiAgICAgICAgY2FydF9pZDogSm9pLnN0cmluZygpLnJlcXVpcmVkKCksXG4gICAgfSk7XG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMudXBkYXRlT3JkZXJTY2hlbWEgPSAocmVxLCByZXMsIG5leHQpID0+IHtcbiAgICBjb25zdCBzY2hlbWEgPSBKb2kub2JqZWN0KHtcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG5cbmV4cG9ydHMuY29tcGFueU9yZGVyU2NoZW1hID0gKHJlcSwgcmVzLCBuZXh0KSA9PiB7XG4gICAgY29uc3Qgc2NoZW1hID0gSm9pLm9iamVjdCh7XG4gICAgICAgIGN1c3RvbWVyX2lkOiBKb2kubnVtYmVyKCkuZW1wdHkoKSxcbiAgICAgICAgb3JkZXJfc3RhdHVzOiBKb2kuc3RyaW5nKCkuZW1wdHkoXCJcIiksXG4gICAgICAgIHB1cmNoYXNlX3N0YXR1czogSm9pLnN0cmluZygpLmVtcHR5KFwiXCIpLFxuICAgIH0pO1xuXG4gICAgdmFsaWRhdGVSZXF1ZXN0KHJlcSwgbmV4dCwgc2NoZW1hKTtcbn07XG4iXX0=", "originalCode": "const Joi = require(\"joi\");\nconst validateRequest = require(\"../../../_middlewares/validateRequest\");\n\nexports.createOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n product_id: Joi.number().required(),\n quantity: Joi.number().required(),\n cart_id: Joi.string().required(),\n });\n validateRequest(req, next, schema);\n};\n\nexports.updateOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n\nexports.companyOrderSchema = (req, res, next) => {\n const schema = Joi.object({\n customer_id: Joi.number().empty(),\n order_status: Joi.string().empty(\"\"),\n purchase_status: Joi.string().empty(\"\"),\n });\n\n validateRequest(req, next, schema);\n};\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/0c/ordervalidators_0cc6fc00846f810b841a468b55aaa5b8.map", "wrapperLength": 89 }, "result": { "scriptId": "2967", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4202, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4199, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.createOrderSchema", "ranges": [ { "startOffset": 221, "endOffset": 435, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.updateOrderSchema", "ranges": [ { "startOffset": 466, "endOffset": 649, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>.exports.companyOrderSchema", "ranges": [ { "startOffset": 681, "endOffset": 903, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id); // insert the item to the order item table\n\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity\n });\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n let orderItem; // check item quantity\n\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order.$relatedQuery(\"items\").delete().where({\n item_id: params.item.product_id\n });\n return orderItem;\n }\n\n orderItem = await order.$relatedQuery(\"items\").patch({\n quantity: params.item.quantity\n }).where({\n item_id: params.item.product_id\n }).returning(\"*\");\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n } // aka update order table\n\n\n order = await Order.query().patchAndFetchById(id, params);\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query().where({\n cart_id: id\n }).orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n} // =======================helpers==========================\n\n\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n let order = await Order.query().where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\"\n }).first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\"\n });\n }\n\n return order;\n} // =========== helpers===========\n\n\nasync function getOrder(id) {\n const order = await Order.query().where({\n cart_id: id\n });\n return order;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLnNlcnZpY2UuanMiXSwibmFtZXMiOlsiT3JkZXIiLCJyZXF1aXJlIiwibW9kdWxlIiwiZXhwb3J0cyIsImNyZWF0ZU9yZGVyIiwidXBkYXRlT3JkZXJJdGVtIiwidXBkYXRlT3JkZXIiLCJnZXRPcmRlckJ5SWQiLCJnZXRPd25PcmRlcnMiLCJnZXRDb21wYW55T3JkZXJzIiwicGFyYW1zIiwib3JkZXIiLCJnZXRfb3JfY3JlYXRlIiwiY2FydF9pZCIsImNvbXBhbnlfaWQiLCJvcmRlckl0ZW0iLCIkcmVsYXRlZFF1ZXJ5IiwiaW5zZXJ0IiwiaXRlbV9pZCIsInByb2R1Y3RfaWQiLCJpZCIsInF1YW50aXR5IiwiZ2V0T3JkZXIiLCJpdGVtIiwiZGVsZXRlIiwid2hlcmUiLCJwYXRjaCIsInJldHVybmluZyIsInVzZXIiLCJ3aXRoR3JhcGhGZXRjaGVkIiwiY29tcGFueSIsImVycm9yIiwiRXJyb3IiLCJxdWVyeSIsInBhdGNoQW5kRmV0Y2hCeUlkIiwib3JkZXJzIiwib3JkZXJCeSIsIm9yZGVyX3N0YXR1cyIsImZpcnN0IiwicHVyY2hhc2Vfc3RhdHVzIl0sIm1hcHBpbmdzIjoiQUFBQSxNQUFNQSxLQUFLLEdBQUdDLE9BQU8sQ0FBQyxlQUFELENBQXJCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUI7QUFDYkMsRUFBQUEsV0FEYTtBQUViQyxFQUFBQSxlQUZhO0FBR2JDLEVBQUFBLFdBSGE7QUFJYkMsRUFBQUEsWUFKYTtBQUtiQyxFQUFBQSxZQUxhO0FBTWJDLEVBQUFBO0FBTmEsQ0FBakI7O0FBU0EsZUFBZUwsV0FBZixDQUEyQk0sTUFBM0IsRUFBbUM7QUFDL0IsUUFBTUMsS0FBSyxHQUFHLE1BQU1DLGFBQWEsQ0FBQ0YsTUFBTSxDQUFDRyxPQUFSLEVBQWlCSCxNQUFNLENBQUNJLFVBQXhCLENBQWpDLENBRCtCLENBRy9COztBQUNBLFFBQU1DLFNBQVMsR0FBR0osS0FBSyxDQUFDSyxhQUFOLENBQW9CLE9BQXBCLEVBQTZCQyxNQUE3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O0FBQ0haLElBQUFBLE9BQU8sRUFBRU8sRUFETjtBQUVIaUIsSUFBQUEsWUFBWSxFQUFFLFNBQVM7QUFGcEIsR0FETyxFQUtiQyxLQUxhLEVBQWxCOztBQU9BLE1BQUksQ0FBQzNCLEtBQUwsRUFBWTtBQUNSO0FBQ0FBLElBQUFBLEtBQUssR0FBRyxNQUFNWCxLQUFLLENBQUNpQyxLQUFOLEdBQWNoQixNQUFkLENBQXFCO0FBQy9CSixNQUFBQSxPQUFPLEVBQUVPLEVBRHNCO0FBRS9CTixNQUFBQSxVQUYrQjtBQUcvQnVCLE1BQUFBLFlBQVksRUFBRSxTQUFTLFVBSFE7QUFJL0JFLE1BQUFBLGVBQWUsRUFBRTtBQUpjLEtBQXJCLENBQWQ7QUFNSDs7QUFFRCxTQUFPNUIsS0FBUDtBQUNILEMsQ0FFRDs7O0FBRUEsZUFBZVcsUUFBZixDQUF3QkYsRUFBeEIsRUFBNEI7QUFDeEIsUUFBTVQsS0FBSyxHQUFHLE1BQU1YLEtBQUssQ0FBQ2lDLEtBQU4sR0FBY1IsS0FBZCxDQUFvQjtBQUFFWixJQUFBQSxPQUFPLEVBQUVPO0FBQVgsR0FBcEIsQ0FBcEI7QUFDQSxTQUFPVCxLQUFQO0FBQ0giLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBPcmRlciA9IHJlcXVpcmUoXCIuL29yZGVyLm1vZGVsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBjcmVhdGVPcmRlcixcbiAgICB1cGRhdGVPcmRlckl0ZW0sXG4gICAgdXBkYXRlT3JkZXIsXG4gICAgZ2V0T3JkZXJCeUlkLFxuICAgIGdldE93bk9yZGVycyxcbiAgICBnZXRDb21wYW55T3JkZXJzLFxufTtcblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlT3JkZXIocGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRfb3JfY3JlYXRlKHBhcmFtcy5jYXJ0X2lkLCBwYXJhbXMuY29tcGFueV9pZCk7XG5cbiAgICAvLyBpbnNlcnQgdGhlIGl0ZW0gdG8gdGhlIG9yZGVyIGl0ZW0gdGFibGVcbiAgICBjb25zdCBvcmRlckl0ZW0gPSBvcmRlci4kcmVsYXRlZFF1ZXJ5KFwiaXRlbXNcIikuaW5zZXJ0KHtcbiAgICAgICAgaXRlbV9pZDogcGFyYW1zLnByb2R1Y3RfaWQsXG4gICAgICAgIG9yZGVyOiBvcmRlci5pZCxcbiAgICAgICAgcXVhbnRpdHk6IHBhcmFtcy5xdWFudGl0eSxcbiAgICB9KTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShpZCwgcGFyYW1zKSB7XG4gICAgY29uc3Qgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCk7XG5cbiAgICBsZXQgb3JkZXJJdGVtO1xuICAgIC8vIGNoZWNrIGl0ZW0gcXVhbnRpdHlcbiAgICBpZiAocGFyYW1zLml0ZW0ucXVhbnRpdHkgPD0gMCkge1xuICAgICAgICAvLyByZW1vdmUgZnJvbSBjYXJ0XG4gICAgICAgIG9yZGVySXRlbSA9IGF3YWl0IG9yZGVyXG4gICAgICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgICAgICAuZGVsZXRlKClcbiAgICAgICAgICAgIC53aGVyZSh7IGl0ZW1faWQ6IHBhcmFtcy5pdGVtLnByb2R1Y3RfaWQgfSk7XG5cbiAgICAgICAgcmV0dXJuIG9yZGVySXRlbTtcbiAgICB9XG5cbiAgICBvcmRlckl0ZW0gPSBhd2FpdCBvcmRlclxuICAgICAgICAuJHJlbGF0ZWRRdWVyeShcIml0ZW1zXCIpXG4gICAgICAgIC5wYXRjaCh7XG4gICAgICAgICAgICBxdWFudGl0eTogcGFyYW1zLml0ZW0ucXVhbnRpdHksXG4gICAgICAgIH0pXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBpdGVtX2lkOiBwYXJhbXMuaXRlbS5wcm9kdWN0X2lkLFxuICAgICAgICB9KVxuICAgICAgICAucmV0dXJuaW5nKFwiKlwiKTtcblxuICAgIHJldHVybiBvcmRlckl0ZW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVwZGF0ZU9yZGVyKGlkLCB1c2VyLCBwYXJhbXMpIHtcbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBnZXRPcmRlcihpZCkud2l0aEdyYXBoRmV0Y2hlZChcImNvbXBhbnlcIik7XG5cbiAgICBpZiAob3JkZXIuY29tcGFueS5pZCAhPT0gdXNlci5jb21wYW55LmlkKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFwiVW5hdGhvcml6ZWRcIik7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgICAvLyBha2EgdXBkYXRlIG9yZGVyIHRhYmxlXG4gICAgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpLnBhdGNoQW5kRmV0Y2hCeUlkKGlkLCBwYXJhbXMpO1xuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPcmRlckJ5SWQoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IGdldE9yZGVyKGlkKS53aXRoR3JhcGhGZXRjaGVkKFwiaXRlbXNcIik7XG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRPd25PcmRlcnMoaWQpIHtcbiAgICBjb25zdCBvcmRlcnMgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7IGNhcnRfaWQ6IGlkIH0pXG4gICAgICAgIC5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRDb21wYW55T3JkZXJzKHBhcmFtcykge1xuICAgIGNvbnN0IG9yZGVycyA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUocGFyYW1zKS5vcmRlckJ5KFwiY3JlYXRlZF9hdFwiKTtcbiAgICByZXR1cm4gb3JkZXJzO1xufVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1oZWxwZXJzPT09PT09PT09PT09PT09PT09PT09PT09PT1cbmFzeW5jIGZ1bmN0aW9uIGdldF9vcl9jcmVhdGUoaWQsIGNvbXBhbnlfaWQpIHtcbiAgICAvLyBjaGVja3MgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYSBjdXN0b21lciBvcmRlclxuICAgIC8vIGlmIGl0IGV4aXN0cyBhZGQgdGhlIG5ldyBpdGVtcyBvbiBpdFxuICAgIC8vIGlmIGl0IGRvZXMgbm90IGV4aXN0IGl0IGNyZWF0ZXMgb25lXG5cbiAgICBsZXQgb3JkZXIgPSBhd2FpdCBPcmRlci5xdWVyeSgpXG4gICAgICAgIC53aGVyZSh7XG4gICAgICAgICAgICBjYXJ0X2lkOiBpZCxcbiAgICAgICAgICAgIG9yZGVyX3N0YXR1czogXCJOZXdcIiB8fCBcIkNoZWNrb3V0XCIsXG4gICAgICAgIH0pXG4gICAgICAgIC5maXJzdCgpO1xuXG4gICAgaWYgKCFvcmRlcikge1xuICAgICAgICAvLyBjcmVhdGUgb25lXG4gICAgICAgIG9yZGVyID0gYXdhaXQgT3JkZXIucXVlcnkoKS5pbnNlcnQoe1xuICAgICAgICAgICAgY2FydF9pZDogaWQsXG4gICAgICAgICAgICBjb21wYW55X2lkLFxuICAgICAgICAgICAgb3JkZXJfc3RhdHVzOiBcIk5ld1wiIHx8IFwiQ2hlY2tvdXRcIixcbiAgICAgICAgICAgIHB1cmNoYXNlX3N0YXR1czogXCJ1bnBhaWRcIixcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9yZGVyO1xufVxuXG4vLyA9PT09PT09PT09PSBoZWxwZXJzPT09PT09PT09PT1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0T3JkZXIoaWQpIHtcbiAgICBjb25zdCBvcmRlciA9IGF3YWl0IE9yZGVyLnF1ZXJ5KCkud2hlcmUoeyBjYXJ0X2lkOiBpZCB9KTtcbiAgICByZXR1cm4gb3JkZXI7XG59XG4iXX0=", "originalCode": "const Order = require(\"./order.model\");\n\nmodule.exports = {\n createOrder,\n updateOrderItem,\n updateOrder,\n getOrderById,\n getOwnOrders,\n getCompanyOrders,\n};\n\nasync function createOrder(params) {\n const order = await get_or_create(params.cart_id, params.company_id);\n\n // insert the item to the order item table\n const orderItem = order.$relatedQuery(\"items\").insert({\n item_id: params.product_id,\n order: order.id,\n quantity: params.quantity,\n });\n\n return orderItem;\n}\n\nasync function updateOrderItem(id, params) {\n const order = await getOrder(id);\n\n let orderItem;\n // check item quantity\n if (params.item.quantity <= 0) {\n // remove from cart\n orderItem = await order\n .$relatedQuery(\"items\")\n .delete()\n .where({ item_id: params.item.product_id });\n\n return orderItem;\n }\n\n orderItem = await order\n .$relatedQuery(\"items\")\n .patch({\n quantity: params.item.quantity,\n })\n .where({\n item_id: params.item.product_id,\n })\n .returning(\"*\");\n\n return orderItem;\n}\n\nasync function updateOrder(id, user, params) {\n let order = await getOrder(id).withGraphFetched(\"company\");\n\n if (order.company.id !== user.company.id) {\n const error = new Error(\"Unathorized\");\n throw error;\n }\n // aka update order table\n order = await Order.query().patchAndFetchById(id, params);\n\n return order;\n}\n\nasync function getOrderById(id) {\n const order = await getOrder(id).withGraphFetched(\"items\");\n return order;\n}\n\nasync function getOwnOrders(id) {\n const orders = await Order.query()\n .where({ cart_id: id })\n .orderBy(\"created_at\");\n return orders;\n}\n\nasync function getCompanyOrders(params) {\n const orders = await Order.query().where(params).orderBy(\"created_at\");\n return orders;\n}\n// =======================helpers==========================\nasync function get_or_create(id, company_id) {\n // checks for the existence of a customer order\n // if it exists add the new items on it\n // if it does not exist it creates one\n\n let order = await Order.query()\n .where({\n cart_id: id,\n order_status: \"New\" || \"Checkout\",\n })\n .first();\n\n if (!order) {\n // create one\n order = await Order.query().insert({\n cart_id: id,\n company_id,\n order_status: \"New\" || \"Checkout\",\n purchase_status: \"unpaid\",\n });\n }\n\n return order;\n}\n\n// =========== helpers===========\n\nasync function getOrder(id) {\n const order = await Order.query().where({ cart_id: id });\n return order;\n}\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/8f/orderservice_8f1654e5f0b57faf5b9d8eb4b1b618c4.map", "wrapperLength": 89 }, "result": { "scriptId": "2968", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 10726, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 10723, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "createOrder", "ranges": [ { "startOffset": 253, "endOffset": 574, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 576, "endOffset": 1081, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "updateOrder", "ranges": [ { "startOffset": 1083, "endOffset": 1410, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrderById", "ranges": [ { "startOffset": 1412, "endOffset": 1525, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOwnOrders", "ranges": [ { "startOffset": 1527, "endOffset": 1668, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getCompanyOrders", "ranges": [ { "startOffset": 1670, "endOffset": 1804, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get_or_create", "ranges": [ { "startOffset": 1867, "endOffset": 2374, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "getOrder", "ranges": [ { "startOffset": 2411, "endOffset": 2524, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const {\n Model\n} = require(\"objection\");\n\nconst tableNames = require(\"../../../constants/tableNames\");\n\nconst db = require(\"../../../db\");\n\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`\n }\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`\n }\n }\n };\n }\n\n}\n\nModel.knex(db);\nmodule.exports = Order;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVyLm1vZGVsLmpzIl0sIm5hbWVzIjpbIk1vZGVsIiwicmVxdWlyZSIsInRhYmxlTmFtZXMiLCJkYiIsInNjaGVtYSIsIk9yZGVyIiwidGFibGVOYW1lIiwib3JkZXIiLCJqc29uU2NoZW1hIiwicmVsYXRpb25NYXBwaW5ncyIsIkNvbXBhbnkiLCJPcmRlckl0ZW0iLCJpdGVtcyIsInJlbGF0aW9uIiwiSGFzTWFueVJlbGF0aW9uIiwibW9kZWxDbGFzcyIsImpvaW4iLCJmcm9tIiwidG8iLCJvcmRlckl0ZW0iLCJjb21wYW55IiwiQmVsb25nc1RvT25lUmVsYXRpb24iLCJrbmV4IiwibW9kdWxlIiwiZXhwb3J0cyJdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTTtBQUFFQSxFQUFBQTtBQUFGLElBQVlDLE9BQU8sQ0FBQyxXQUFELENBQXpCOztBQUNBLE1BQU1DLFVBQVUsR0FBR0QsT0FBTyxDQUFDLCtCQUFELENBQTFCOztBQUNBLE1BQU1FLEVBQUUsR0FBR0YsT0FBTyxDQUFDLGFBQUQsQ0FBbEI7O0FBQ0EsTUFBTUcsTUFBTSxHQUFHSCxPQUFPLENBQUMscUJBQUQsQ0FBdEI7O0FBRUEsTUFBTUksS0FBTixTQUFvQkwsS0FBcEIsQ0FBMEI7QUFDdEIsYUFBV00sU0FBWCxHQUF1QjtBQUNuQixXQUFPSixVQUFVLENBQUNLLEtBQWxCO0FBQ0g7O0FBRUQsYUFBV0MsVUFBWCxHQUF3QjtBQUNwQixXQUFPSixNQUFQO0FBQ0g7O0FBRUQsYUFBV0ssZ0JBQVgsR0FBOEI7QUFDMUIsVUFBTUMsT0FBTyxHQUFHVCxPQUFPLENBQUMsa0JBQUQsQ0FBdkI7O0FBQ0EsVUFBTVUsU0FBUyxHQUFHVixPQUFPLENBQUMsNkJBQUQsQ0FBekI7O0FBRUEsV0FBTztBQUNIVyxNQUFBQSxLQUFLLEVBQUU7QUFDSEMsUUFBQUEsUUFBUSxFQUFFYixLQUFLLENBQUNjLGVBRGI7QUFFSEMsUUFBQUEsVUFBVSxFQUFFSixTQUZUO0FBR0hLLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLEtBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDaUIsU0FBVTtBQUYxQjtBQUhILE9BREo7QUFTSEMsTUFBQUEsT0FBTyxFQUFFO0FBQ0xQLFFBQUFBLFFBQVEsRUFBRWIsS0FBSyxDQUFDcUIsb0JBRFg7QUFFTE4sUUFBQUEsVUFBVSxFQUFFTCxPQUZQO0FBR0xNLFFBQUFBLElBQUksRUFBRTtBQUNGQyxVQUFBQSxJQUFJLEVBQUcsR0FBRWYsVUFBVSxDQUFDSyxLQUFNLGFBRHhCO0FBRUZXLFVBQUFBLEVBQUUsRUFBRyxHQUFFaEIsVUFBVSxDQUFDa0IsT0FBUTtBQUZ4QjtBQUhEO0FBVE4sS0FBUDtBQWtCSDs7QUEvQnFCOztBQWtDMUJwQixLQUFLLENBQUNzQixJQUFOLENBQVduQixFQUFYO0FBRUFvQixNQUFNLENBQUNDLE9BQVAsR0FBaUJuQixLQUFqQiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHsgTW9kZWwgfSA9IHJlcXVpcmUoXCJvYmplY3Rpb25cIik7XG5jb25zdCB0YWJsZU5hbWVzID0gcmVxdWlyZShcIi4uLy4uLy4uL2NvbnN0YW50cy90YWJsZU5hbWVzXCIpO1xuY29uc3QgZGIgPSByZXF1aXJlKFwiLi4vLi4vLi4vZGJcIik7XG5jb25zdCBzY2hlbWEgPSByZXF1aXJlKFwiLi9vcmRlci5zY2hlbWEuanNvblwiKTtcblxuY2xhc3MgT3JkZXIgZXh0ZW5kcyBNb2RlbCB7XG4gICAgc3RhdGljIGdldCB0YWJsZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0YWJsZU5hbWVzLm9yZGVyO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXQganNvblNjaGVtYSgpIHtcbiAgICAgICAgcmV0dXJuIHNjaGVtYTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0IHJlbGF0aW9uTWFwcGluZ3MoKSB7XG4gICAgICAgIGNvbnN0IENvbXBhbnkgPSByZXF1aXJlKFwiLi4vY29tcGFueS5tb2RlbFwiKTtcbiAgICAgICAgY29uc3QgT3JkZXJJdGVtID0gcmVxdWlyZShcIi4vb3JkZXJJdGVtL29yZGVySXRlbS5tb2RlbFwiKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgaXRlbXM6IHtcbiAgICAgICAgICAgICAgICByZWxhdGlvbjogTW9kZWwuSGFzTWFueVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IE9yZGVySXRlbSxcbiAgICAgICAgICAgICAgICBqb2luOiB7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke3RhYmxlTmFtZXMub3JkZXJ9LmlkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMub3JkZXJJdGVtfS5vcmRlcl9pZGAsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjb21wYW55OiB7XG4gICAgICAgICAgICAgICAgcmVsYXRpb246IE1vZGVsLkJlbG9uZ3NUb09uZVJlbGF0aW9uLFxuICAgICAgICAgICAgICAgIG1vZGVsQ2xhc3M6IENvbXBhbnksXG4gICAgICAgICAgICAgICAgam9pbjoge1xuICAgICAgICAgICAgICAgICAgICBmcm9tOiBgJHt0YWJsZU5hbWVzLm9yZGVyfS5jb21wYW55X2lkYCxcbiAgICAgICAgICAgICAgICAgICAgdG86IGAke3RhYmxlTmFtZXMuY29tcGFueX0uaWRgLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuTW9kZWwua25leChkYik7XG5cbm1vZHVsZS5leHBvcnRzID0gT3JkZXI7XG4iXX0=", "originalCode": "const { Model } = require(\"objection\");\nconst tableNames = require(\"../../../constants/tableNames\");\nconst db = require(\"../../../db\");\nconst schema = require(\"./order.schema.json\");\n\nclass Order extends Model {\n static get tableName() {\n return tableNames.order;\n }\n\n static get jsonSchema() {\n return schema;\n }\n\n static get relationMappings() {\n const Company = require(\"../company.model\");\n const OrderItem = require(\"./orderItem/orderItem.model\");\n\n return {\n items: {\n relation: Model.HasManyRelation,\n modelClass: OrderItem,\n join: {\n from: `${tableNames.order}.id`,\n to: `${tableNames.orderItem}.order_id`,\n },\n },\n company: {\n relation: Model.BelongsToOneRelation,\n modelClass: Company,\n join: {\n from: `${tableNames.order}.company_id`,\n to: `${tableNames.company}.id`,\n },\n },\n };\n }\n}\n\nModel.knex(db);\n\nmodule.exports = Order;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/79/ordermodel_792f8a5579c998fd783317a17c94a303.map", "wrapperLength": 89 }, "result": { "scriptId": "2969", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 4521, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 4518, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Order", "ranges": [ { "startOffset": 278, "endOffset": 278, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get tableName", "ranges": [ { "startOffset": 315, "endOffset": 365, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get jsonSchema", "ranges": [ { "startOffset": 376, "endOffset": 417, "count": 0 } ], "isBlockCoverage": false }, { "functionName": "get relationMappings", "ranges": [ { "startOffset": 428, "endOffset": 1019, "count": 0 } ], "isBlockCoverage": false } ] } }, { "codeTransformResult": { "code": "const express = require(\"express\");\n\nconst {\n auth: Auth\n} = require(\"../../../../_middlewares/auth\");\n\nconst role = require(\"../../../../utils/role\");\n\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true\n});\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm9yZGVySXRlbS5yb3V0ZXMuanMiXSwibmFtZXMiOlsiZXhwcmVzcyIsInJlcXVpcmUiLCJhdXRoIiwiQXV0aCIsInJvbGUiLCJvcmRlclNlcnZpY2UiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJtZXJnZVBhcmFtcyIsInB1dCIsImN1c3RvbWVyIiwidXBkYXRlT3JkZXJJdGVtIiwicmVxIiwicmVzIiwibmV4dCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiJBQUFBLE1BQU1BLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBdkI7O0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxJQUFJLEVBQUVDO0FBQVIsSUFBaUJGLE9BQU8sQ0FBQywrQkFBRCxDQUE5Qjs7QUFDQSxNQUFNRyxJQUFJLEdBQUdILE9BQU8sQ0FBQyx3QkFBRCxDQUFwQjs7QUFDQSxNQUFNSSxZQUFZLEdBQUdKLE9BQU8sQ0FBQyxrQkFBRCxDQUE1Qjs7QUFFQSxNQUFNSyxNQUFNLEdBQUdOLE9BQU8sQ0FBQ08sTUFBUixDQUFlO0FBQzFCQyxFQUFBQSxXQUFXLEVBQUU7QUFEYSxDQUFmLENBQWY7QUFJQUYsTUFBTSxDQUFDRyxHQUFQLENBQVcsR0FBWCxFQUFnQk4sSUFBSSxDQUFDQyxJQUFJLENBQUNNLFFBQU4sQ0FBcEIsRUFBcUNDLGVBQXJDOztBQUVBLFNBQVNBLGVBQVQsQ0FBeUJDLEdBQXpCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDckNULEVBQUFBLFlBQVksQ0FBQ00sZUFBYjtBQUNIOztBQUVESSxNQUFNLENBQUNDLE9BQVAsR0FBaUJWLE1BQWpCIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgZXhwcmVzcyA9IHJlcXVpcmUoXCJleHByZXNzXCIpO1xuY29uc3QgeyBhdXRoOiBBdXRoIH0gPSByZXF1aXJlKFwiLi4vLi4vLi4vLi4vX21pZGRsZXdhcmVzL2F1dGhcIik7XG5jb25zdCByb2xlID0gcmVxdWlyZShcIi4uLy4uLy4uLy4uL3V0aWxzL3JvbGVcIik7XG5jb25zdCBvcmRlclNlcnZpY2UgPSByZXF1aXJlKFwiLi4vb3JkZXIuc2VydmljZVwiKTtcblxuY29uc3Qgcm91dGVyID0gZXhwcmVzcy5Sb3V0ZXIoe1xuICAgIG1lcmdlUGFyYW1zOiB0cnVlLFxufSk7XG5cbnJvdXRlci5wdXQoXCIvXCIsIEF1dGgocm9sZS5jdXN0b21lciksIHVwZGF0ZU9yZGVySXRlbSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9yZGVySXRlbShyZXEsIHJlcywgbmV4dCkge1xuICAgIG9yZGVyU2VydmljZS51cGRhdGVPcmRlckl0ZW0oKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByb3V0ZXI7XG4iXX0=", "originalCode": "const express = require(\"express\");\nconst { auth: Auth } = require(\"../../../../_middlewares/auth\");\nconst role = require(\"../../../../utils/role\");\nconst orderService = require(\"../order.service\");\n\nconst router = express.Router({\n mergeParams: true,\n});\n\nrouter.put(\"/\", Auth(role.customer), updateOrderItem);\n\nfunction updateOrderItem(req, res, next) {\n orderService.updateOrderItem();\n}\n\nmodule.exports = router;\n", "sourceMapPath": "/tmp/jest_rs/jest-transform-cache-b962fb3a13b4c1668b1985fc59a3e401-b0986c9d7f26a96973ae74af52fbaf1c/44/orderItemroutes_440b1db2888128c60482407cf8bcef31.map", "wrapperLength": 89 }, "result": { "scriptId": "2970", "url": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "functions": [ { "functionName": "", "ranges": [ { "startOffset": 0, "endOffset": 2184, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "Object.<anonymous>", "ranges": [ { "startOffset": 23, "endOffset": 2181, "count": 1 } ], "isBlockCoverage": false }, { "functionName": "updateOrderItem", "ranges": [ { "startOffset": 406, "endOffset": 484, "count": 0 } ], "isBlockCoverage": false } ] } } ] } ], "wasInterrupted": false, "coverageMap": { "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/knexfile.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 36 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 27 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 18 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 11 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 21 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 21 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 33 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 51 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 44 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 52 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 10 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 21 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 52 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 10 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 0 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 16 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 47 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 10 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 6 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 0 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 18 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 21 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 21 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 33 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 46 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 44 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 52 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 10 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 21 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 52 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 10 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 0 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 16 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 47 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 10 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 6 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 0 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 17 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 21 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 45 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 15 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 19 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 20 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 10 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 21 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 52 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 10 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 0 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 16 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 47 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 10 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 6 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1, "43": 1, "44": 1, "45": 1, "46": 1, "47": 1, "48": 1, "49": 1, "50": 1, "51": 1, "52": 1, "53": 1 }, "branchMap": { "0": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 2 }, "end": { "line": 54, "column": 2 } }, "locations": [ { "start": { "line": 54, "column": 2 }, "end": { "line": 54, "column": 2 } } ] }, "1": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 2 }, "end": { "line": 54, "column": 2 } }, "locations": [ { "start": { "line": 54, "column": 2 }, "end": { "line": 54, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 54, "column": 2 }, "end": { "line": 54, "column": 2 } }, "loc": { "start": { "line": 54, "column": 2 }, "end": { "line": 54, "column": 2 } }, "line": 54 } }, "f": { "0": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/auth.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 36 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 47 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 56 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 18 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 9 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 12 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 2 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 27 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 36 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 24 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 5 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 38 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 18 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 12 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 40 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 59 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 11 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 66 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 16 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 41 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 58 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 15 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 9 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 35 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 13 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 75 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 0 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 43 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 47 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 25 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 0 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 80 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 64 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 73 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 13 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 0 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 58 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 36 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 19 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 25 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 24 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 9 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 6 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 1 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 0 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 20 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 38 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 13 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 46 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 24 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 42 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 46 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 18 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 25 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 0 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 24 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 34 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 73 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 13 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 19 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 25 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 24 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 9 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 6 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 26, "10": 26, "11": 4, "12": 4, "13": 26, "14": 26, "15": 33, "16": 33, "17": 33, "18": 33, "19": 33, "20": 16, "21": 33, "22": 1, "23": 1, "24": 1, "25": 1, "26": 16, "27": 16, "28": 16, "29": 16, "30": 16, "31": 16, "32": 16, "33": 16, "34": 16, "35": 33, "36": 1, "37": 1, "38": 1, "39": 15, "40": 15, "41": 15, "42": 15, "43": 33, "44": 0, "45": 0, "46": 15, "47": 26, "48": 1, "49": 11, "50": 11, "51": 16, "52": 16, "53": 16, "54": 8, "55": 8, "56": 8, "57": 8, "58": 8, "59": 16, "60": 5, "61": 5, "62": 5, "63": 3, "64": 16, "65": 0, "66": 0, "67": 3, "68": 11 }, "branchMap": { "0": { "type": "branch", "line": 69, "loc": { "start": { "line": 69, "column": 1 }, "end": { "line": 69, "column": 1 } }, "locations": [ { "start": { "line": 69, "column": 1 }, "end": { "line": 69, "column": 1 } } ] }, "1": { "type": "branch", "line": 69, "loc": { "start": { "line": 69, "column": 1 }, "end": { "line": 69, "column": 1 } }, "locations": [ { "start": { "line": 69, "column": 1 }, "end": { "line": 69, "column": 1 } } ] }, "2": { "type": "branch", "line": 10, "loc": { "start": { "line": 10, "column": 0 }, "end": { "line": 48, "column": 1 } }, "locations": [ { "start": { "line": 10, "column": 0 }, "end": { "line": 48, "column": 1 } } ] }, "3": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 35 }, "end": { "line": 13, "column": 5 } }, "locations": [ { "start": { "line": 11, "column": 35 }, "end": { "line": 13, "column": 5 } } ] }, "4": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 11 }, "end": { "line": 47, "column": 6 } }, "locations": [ { "start": { "line": 15, "column": 11 }, "end": { "line": 47, "column": 6 } } ] }, "5": { "type": "branch", "line": 18, "loc": { "start": { "line": 18, "column": 12 }, "end": { "line": 19, "column": 15 } }, "locations": [ { "start": { "line": 18, "column": 12 }, "end": { "line": 19, "column": 15 } } ] }, "6": { "type": "branch", "line": 20, "loc": { "start": { "line": 20, "column": 10 }, "end": { "line": 22, "column": 15 } }, "locations": [ { "start": { "line": 20, "column": 10 }, "end": { "line": 22, "column": 15 } } ] }, "7": { "type": "branch", "line": 22, "loc": { "start": { "line": 22, "column": 9 }, "end": { "line": 26, "column": 9 } }, "locations": [ { "start": { "line": 22, "column": 9 }, "end": { "line": 26, "column": 9 } } ] }, "8": { "type": "branch", "line": 26, "loc": { "start": { "line": 26, "column": 9 }, "end": { "line": 36, "column": 48 } }, "locations": [ { "start": { "line": 26, "column": 9 }, "end": { "line": 36, "column": 48 } } ] }, "9": { "type": "branch", "line": 36, "loc": { "start": { "line": 36, "column": 79 }, "end": { "line": 39, "column": 13 } }, "locations": [ { "start": { "line": 36, "column": 79 }, "end": { "line": 39, "column": 13 } } ] }, "10": { "type": "branch", "line": 39, "loc": { "start": { "line": 39, "column": 13 }, "end": { "line": 44, "column": 10 } }, "locations": [ { "start": { "line": 39, "column": 13 }, "end": { "line": 44, "column": 10 } } ] }, "11": { "type": "branch", "line": 44, "loc": { "start": { "line": 44, "column": 10 }, "end": { "line": 46, "column": 9 } }, "locations": [ { "start": { "line": 44, "column": 10 }, "end": { "line": 46, "column": 9 } } ] }, "12": { "type": "branch", "line": 46, "loc": { "start": { "line": 46, "column": 9 }, "end": { "line": 47, "column": 6 } }, "locations": [ { "start": { "line": 46, "column": 9 }, "end": { "line": 47, "column": 6 } } ] }, "13": { "type": "branch", "line": 50, "loc": { "start": { "line": 50, "column": 0 }, "end": { "line": 69, "column": 1 } }, "locations": [ { "start": { "line": 50, "column": 0 }, "end": { "line": 69, "column": 1 } } ] }, "14": { "type": "branch", "line": 51, "loc": { "start": { "line": 51, "column": 11 }, "end": { "line": 68, "column": 6 } }, "locations": [ { "start": { "line": 51, "column": 11 }, "end": { "line": 68, "column": 6 } } ] }, "15": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 23 }, "end": { "line": 60, "column": 16 } }, "locations": [ { "start": { "line": 54, "column": 23 }, "end": { "line": 60, "column": 16 } } ] }, "16": { "type": "branch", "line": 60, "loc": { "start": { "line": 60, "column": 23 }, "end": { "line": 63, "column": 13 } }, "locations": [ { "start": { "line": 60, "column": 23 }, "end": { "line": 63, "column": 13 } } ] }, "17": { "type": "branch", "line": 63, "loc": { "start": { "line": 63, "column": 13 }, "end": { "line": 65, "column": 10 } }, "locations": [ { "start": { "line": 63, "column": 13 }, "end": { "line": 65, "column": 10 } } ] }, "18": { "type": "branch", "line": 65, "loc": { "start": { "line": 65, "column": 10 }, "end": { "line": 67, "column": 9 } }, "locations": [ { "start": { "line": 65, "column": 10 }, "end": { "line": 67, "column": 9 } } ] }, "19": { "type": "branch", "line": 67, "loc": { "start": { "line": 67, "column": 9 }, "end": { "line": 68, "column": 6 } }, "locations": [ { "start": { "line": 67, "column": 9 }, "end": { "line": 68, "column": 6 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 26 ], "3": [ 4 ], "4": [ 33 ], "5": [ 16 ], "6": [ 16 ], "7": [ 1 ], "8": [ 16 ], "9": [ 1 ], "10": [ 15 ], "11": [ 0 ], "12": [ 15 ], "13": [ 11 ], "14": [ 16 ], "15": [ 8 ], "16": [ 5 ], "17": [ 3 ], "18": [ 0 ], "19": [ 3 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 69, "column": 1 }, "end": { "line": 69, "column": 1 } }, "loc": { "start": { "line": 69, "column": 1 }, "end": { "line": 69, "column": 1 } }, "line": 69 }, "1": { "name": "auth", "decl": { "start": { "line": 10, "column": 0 }, "end": { "line": 48, "column": 1 } }, "loc": { "start": { "line": 10, "column": 0 }, "end": { "line": 48, "column": 1 } }, "line": 10 }, "2": { "name": "isOwner", "decl": { "start": { "line": 50, "column": 0 }, "end": { "line": 69, "column": 1 } }, "loc": { "start": { "line": 50, "column": 0 }, "end": { "line": 69, "column": 1 } }, "line": 50 } }, "f": { "0": 1, "1": 26, "2": 11 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/_middlewares/validateRequest.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 33 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 45 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 21 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 48 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 51 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 51 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 6 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 64 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 16 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 58 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 34 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 26 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 22 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 12 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 25 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 15 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 5 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 19, "3": 19, "4": 19, "5": 19, "6": 19, "7": 19, "8": 19, "9": 19, "10": 19, "11": 1, "12": 1, "13": 1, "14": 1, "15": 19, "16": 18, "17": 18, "18": 18, "19": 19 }, "branchMap": { "0": { "type": "branch", "line": 20, "loc": { "start": { "line": 20, "column": 1 }, "end": { "line": 20, "column": 1 } }, "locations": [ { "start": { "line": 20, "column": 1 }, "end": { "line": 20, "column": 1 } } ] }, "1": { "type": "branch", "line": 20, "loc": { "start": { "line": 20, "column": 1 }, "end": { "line": 20, "column": 1 } }, "locations": [ { "start": { "line": 20, "column": 1 }, "end": { "line": 20, "column": 1 } } ] }, "2": { "type": "branch", "line": 3, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 20, "column": 1 } }, "locations": [ { "start": { "line": 3, "column": 0 }, "end": { "line": 20, "column": 1 } } ] }, "3": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 15 }, "end": { "line": 16, "column": 11 } }, "locations": [ { "start": { "line": 11, "column": 15 }, "end": { "line": 16, "column": 11 } } ] }, "4": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 5 }, "end": { "line": 19, "column": 5 } }, "locations": [ { "start": { "line": 16, "column": 5 }, "end": { "line": 19, "column": 5 } } ] }, "5": { "type": "branch", "line": 13, "loc": { "start": { "line": 13, "column": 18 }, "end": { "line": 13, "column": 34 } }, "locations": [ { "start": { "line": 13, "column": 18 }, "end": { "line": 13, "column": 34 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 19 ], "3": [ 1 ], "4": [ 18 ], "5": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 20, "column": 1 }, "end": { "line": 20, "column": 1 } }, "loc": { "start": { "line": 20, "column": 1 }, "end": { "line": 20, "column": 1 } }, "line": 20 }, "1": { "name": "validateRequest", "decl": { "start": { "line": 3, "column": 0 }, "end": { "line": 20, "column": 1 } }, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 20, "column": 1 } }, "line": 3 } }, "f": { "0": 1, "1": 19 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 32 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 7 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 17 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 17 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 17 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 22 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 33 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 46 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 58 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 41 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 43 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 66 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 55 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 61 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 42 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 36 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 69 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 49 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 39 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 0 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 24 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 0 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 32 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 41 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 15 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 35 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 36 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 38 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 10 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 21 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 1 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 0 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 35 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 31 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 15 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 46 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 36 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 29 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 21 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 22 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 24 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 102 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 15 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 10 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 21 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 1 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 0 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 43 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 34 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 15 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 46 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 36 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 29 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 21 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 22 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 24 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 102 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 15 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 10 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 21 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 1 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 0 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 38 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 15 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 30 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 70 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 21 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 1 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 0 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 33 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 15 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 17 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 47 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 21 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 1 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 0 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 34 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 68 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 80 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 64 } }, "82": { "start": { "line": 83, "column": 0 }, "end": { "line": 83, "column": 5 } }, "83": { "start": { "line": 84, "column": 0 }, "end": { "line": 84, "column": 0 } }, "84": { "start": { "line": 85, "column": 0 }, "end": { "line": 85, "column": 15 } }, "85": { "start": { "line": 86, "column": 0 }, "end": { "line": 86, "column": 31 } }, "86": { "start": { "line": 87, "column": 0 }, "end": { "line": 87, "column": 79 } }, "87": { "start": { "line": 88, "column": 0 }, "end": { "line": 88, "column": 21 } }, "88": { "start": { "line": 89, "column": 0 }, "end": { "line": 89, "column": 1 } }, "89": { "start": { "line": 90, "column": 0 }, "end": { "line": 90, "column": 0 } }, "90": { "start": { "line": 91, "column": 0 }, "end": { "line": 91, "column": 33 } }, "91": { "start": { "line": 92, "column": 0 }, "end": { "line": 92, "column": 15 } }, "92": { "start": { "line": 93, "column": 0 }, "end": { "line": 93, "column": 25 } }, "93": { "start": { "line": 94, "column": 0 }, "end": { "line": 94, "column": 45 } }, "94": { "start": { "line": 95, "column": 0 }, "end": { "line": 95, "column": 21 } }, "95": { "start": { "line": 96, "column": 0 }, "end": { "line": 96, "column": 1 } }, "96": { "start": { "line": 97, "column": 0 }, "end": { "line": 97, "column": 0 } }, "97": { "start": { "line": 98, "column": 0 }, "end": { "line": 98, "column": 33 } }, "98": { "start": { "line": 99, "column": 0 }, "end": { "line": 99, "column": 71 } }, "99": { "start": { "line": 100, "column": 0 }, "end": { "line": 100, "column": 80 } }, "100": { "start": { "line": 101, "column": 0 }, "end": { "line": 101, "column": 64 } }, "101": { "start": { "line": 102, "column": 0 }, "end": { "line": 102, "column": 5 } }, "102": { "start": { "line": 103, "column": 0 }, "end": { "line": 103, "column": 0 } }, "103": { "start": { "line": 104, "column": 0 }, "end": { "line": 104, "column": 15 } }, "104": { "start": { "line": 105, "column": 0 }, "end": { "line": 105, "column": 40 } }, "105": { "start": { "line": 106, "column": 0 }, "end": { "line": 106, "column": 45 } }, "106": { "start": { "line": 107, "column": 0 }, "end": { "line": 107, "column": 21 } }, "107": { "start": { "line": 108, "column": 0 }, "end": { "line": 108, "column": 1 } }, "108": { "start": { "line": 109, "column": 0 }, "end": { "line": 109, "column": 0 } }, "109": { "start": { "line": 110, "column": 0 }, "end": { "line": 110, "column": 34 } }, "110": { "start": { "line": 111, "column": 0 }, "end": { "line": 111, "column": 71 } }, "111": { "start": { "line": 112, "column": 0 }, "end": { "line": 112, "column": 80 } }, "112": { "start": { "line": 113, "column": 0 }, "end": { "line": 113, "column": 64 } }, "113": { "start": { "line": 114, "column": 0 }, "end": { "line": 114, "column": 5 } }, "114": { "start": { "line": 115, "column": 0 }, "end": { "line": 115, "column": 0 } }, "115": { "start": { "line": 116, "column": 0 }, "end": { "line": 116, "column": 15 } }, "116": { "start": { "line": 117, "column": 0 }, "end": { "line": 117, "column": 29 } }, "117": { "start": { "line": 118, "column": 0 }, "end": { "line": 118, "column": 19 } }, "118": { "start": { "line": 119, "column": 0 }, "end": { "line": 119, "column": 22 } }, "119": { "start": { "line": 120, "column": 0 }, "end": { "line": 120, "column": 56 } }, "120": { "start": { "line": 121, "column": 0 }, "end": { "line": 121, "column": 34 } }, "121": { "start": { "line": 122, "column": 0 }, "end": { "line": 122, "column": 14 } }, "122": { "start": { "line": 123, "column": 0 }, "end": { "line": 123, "column": 9 } }, "123": { "start": { "line": 124, "column": 0 }, "end": { "line": 124, "column": 21 } }, "124": { "start": { "line": 125, "column": 0 }, "end": { "line": 125, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 11, "25": 11, "26": 11, "27": 11, "28": 11, "29": 11, "30": 11, "31": 11, "32": 11, "33": 1, "34": 2, "35": 2, "36": 2, "37": 2, "38": 2, "39": 1, "40": 1, "41": 1, "42": 1, "43": 1, "44": 1, "45": 1, "46": 2, "47": 2, "48": 1, "49": 0, "50": 0, "51": 0, "52": 0, "53": 0, "54": 0, "55": 0, "56": 0, "57": 0, "58": 0, "59": 0, "60": 0, "61": 0, "62": 0, "63": 1, "64": 0, "65": 0, "66": 0, "67": 0, "68": 0, "69": 0, "70": 1, "71": 1, "72": 1, "73": 1, "74": 1, "75": 1, "76": 1, "77": 1, "78": 1, "79": 1, "80": 1, "81": 0, "82": 0, "83": 1, "84": 1, "85": 1, "86": 1, "87": 1, "88": 1, "89": 1, "90": 1, "91": 1, "92": 1, "93": 1, "94": 1, "95": 1, "96": 1, "97": 2, "98": 2, "99": 2, "100": 0, "101": 0, "102": 2, "103": 2, "104": 2, "105": 2, "106": 2, "107": 2, "108": 1, "109": 0, "110": 0, "111": 0, "112": 0, "113": 0, "114": 0, "115": 0, "116": 0, "117": 0, "118": 0, "119": 0, "120": 0, "121": 0, "122": 0, "123": 0, "124": 0 }, "branchMap": { "0": { "type": "branch", "line": 125, "loc": { "start": { "line": 125, "column": 1 }, "end": { "line": 125, "column": 1 } }, "locations": [ { "start": { "line": 125, "column": 1 }, "end": { "line": 125, "column": 1 } } ] }, "1": { "type": "branch", "line": 125, "loc": { "start": { "line": 125, "column": 1 }, "end": { "line": 125, "column": 1 } }, "locations": [ { "start": { "line": 125, "column": 1 }, "end": { "line": 125, "column": 1 } } ] }, "2": { "type": "branch", "line": 25, "loc": { "start": { "line": 25, "column": 0 }, "end": { "line": 33, "column": 1 } }, "locations": [ { "start": { "line": 25, "column": 0 }, "end": { "line": 33, "column": 1 } } ] }, "3": { "type": "branch", "line": 29, "loc": { "start": { "line": 29, "column": 14 }, "end": { "line": 31, "column": 10 } }, "locations": [ { "start": { "line": 29, "column": 14 }, "end": { "line": 31, "column": 10 } } ] }, "4": { "type": "branch", "line": 35, "loc": { "start": { "line": 35, "column": 0 }, "end": { "line": 48, "column": 1 } }, "locations": [ { "start": { "line": 35, "column": 0 }, "end": { "line": 48, "column": 1 } } ] }, "5": { "type": "branch", "line": 39, "loc": { "start": { "line": 39, "column": 14 }, "end": { "line": 46, "column": 10 } }, "locations": [ { "start": { "line": 39, "column": 14 }, "end": { "line": 46, "column": 10 } } ] }, "6": { "type": "branch", "line": 72, "loc": { "start": { "line": 72, "column": 0 }, "end": { "line": 77, "column": 1 } }, "locations": [ { "start": { "line": 72, "column": 0 }, "end": { "line": 77, "column": 1 } } ] }, "7": { "type": "branch", "line": 75, "loc": { "start": { "line": 75, "column": 15 }, "end": { "line": 75, "column": 31 } }, "locations": [ { "start": { "line": 75, "column": 15 }, "end": { "line": 75, "column": 31 } } ] }, "8": { "type": "branch", "line": 79, "loc": { "start": { "line": 79, "column": 0 }, "end": { "line": 89, "column": 1 } }, "locations": [ { "start": { "line": 79, "column": 0 }, "end": { "line": 89, "column": 1 } } ] }, "9": { "type": "branch", "line": 81, "loc": { "start": { "line": 81, "column": 79 }, "end": { "line": 83, "column": 5 } }, "locations": [ { "start": { "line": 81, "column": 79 }, "end": { "line": 83, "column": 5 } } ] }, "10": { "type": "branch", "line": 87, "loc": { "start": { "line": 87, "column": 15 }, "end": { "line": 87, "column": 61 } }, "locations": [ { "start": { "line": 87, "column": 15 }, "end": { "line": 87, "column": 61 } } ] }, "11": { "type": "branch", "line": 87, "loc": { "start": { "line": 87, "column": 35 }, "end": { "line": 87, "column": 61 } }, "locations": [ { "start": { "line": 87, "column": 35 }, "end": { "line": 87, "column": 61 } } ] }, "12": { "type": "branch", "line": 91, "loc": { "start": { "line": 91, "column": 0 }, "end": { "line": 96, "column": 1 } }, "locations": [ { "start": { "line": 91, "column": 0 }, "end": { "line": 96, "column": 1 } } ] }, "13": { "type": "branch", "line": 98, "loc": { "start": { "line": 98, "column": 0 }, "end": { "line": 108, "column": 1 } }, "locations": [ { "start": { "line": 98, "column": 0 }, "end": { "line": 108, "column": 1 } } ] }, "14": { "type": "branch", "line": 100, "loc": { "start": { "line": 100, "column": 79 }, "end": { "line": 102, "column": 5 } }, "locations": [ { "start": { "line": 100, "column": 79 }, "end": { "line": 102, "column": 5 } } ] }, "15": { "type": "branch", "line": 106, "loc": { "start": { "line": 106, "column": 15 }, "end": { "line": 106, "column": 30 } }, "locations": [ { "start": { "line": 106, "column": 15 }, "end": { "line": 106, "column": 30 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 11 ], "3": [ 11 ], "4": [ 2 ], "5": [ 1 ], "6": [ 1 ], "7": [ 1 ], "8": [ 1 ], "9": [ 0 ], "10": [ 1 ], "11": [ 0 ], "12": [ 1 ], "13": [ 2 ], "14": [ 0 ], "15": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 125, "column": 1 }, "end": { "line": 125, "column": 1 } }, "loc": { "start": { "line": 125, "column": 1 }, "end": { "line": 125, "column": 1 } }, "line": 125 }, "1": { "name": "login", "decl": { "start": { "line": 25, "column": 0 }, "end": { "line": 33, "column": 1 } }, "loc": { "start": { "line": 25, "column": 0 }, "end": { "line": 33, "column": 1 } }, "line": 25 }, "2": { "name": "register", "decl": { "start": { "line": 35, "column": 0 }, "end": { "line": 48, "column": 1 } }, "loc": { "start": { "line": 35, "column": 0 }, "end": { "line": 48, "column": 1 } }, "line": 35 }, "3": { "name": "registerCustomer", "decl": { "start": { "line": 50, "column": 0 }, "end": { "line": 63, "column": 1 } }, "loc": { "start": { "line": 50, "column": 0 }, "end": { "line": 63, "column": 1 } }, "line": 50 }, "4": { "name": "verifyEmail", "decl": { "start": { "line": 65, "column": 0 }, "end": { "line": 70, "column": 1 } }, "loc": { "start": { "line": 65, "column": 0 }, "end": { "line": 70, "column": 1 } }, "line": 65 }, "5": { "name": "getAll", "decl": { "start": { "line": 72, "column": 0 }, "end": { "line": 77, "column": 1 } }, "loc": { "start": { "line": 72, "column": 0 }, "end": { "line": 77, "column": 1 } }, "line": 72 }, "6": { "name": "getById", "decl": { "start": { "line": 79, "column": 0 }, "end": { "line": 89, "column": 1 } }, "loc": { "start": { "line": 79, "column": 0 }, "end": { "line": 89, "column": 1 } }, "line": 79 }, "7": { "name": "create", "decl": { "start": { "line": 91, "column": 0 }, "end": { "line": 96, "column": 1 } }, "loc": { "start": { "line": 91, "column": 0 }, "end": { "line": 96, "column": 1 } }, "line": 91 }, "8": { "name": "update", "decl": { "start": { "line": 98, "column": 0 }, "end": { "line": 108, "column": 1 } }, "loc": { "start": { "line": 98, "column": 0 }, "end": { "line": 108, "column": 1 } }, "line": 98 }, "9": { "name": "_delete", "decl": { "start": { "line": 110, "column": 0 }, "end": { "line": 125, "column": 1 } }, "loc": { "start": { "line": 110, "column": 0 }, "end": { "line": 125, "column": 1 } }, "line": 110 } }, "f": { "0": 1, "1": 11, "2": 2, "3": 0, "4": 0, "5": 1, "6": 1, "7": 1, "8": 2, "9": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.service.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 43 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 39 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 33 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 33 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 47 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 0 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 18 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 7 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 19 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 18 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 21 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 25 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 25 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 20 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 7 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 10 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 13 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 16 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 11 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 11 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 11 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 12 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 20 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 2 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 0 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 43 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 48 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 0 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 8 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 19 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 33 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 59 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 7 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 66 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 20 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 5 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 0 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 51 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 0 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 12 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 36 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 14 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 6 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 1 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 0 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 41 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 15 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 52 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 80 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 66 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 32 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 64 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 10 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 0 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 20 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 5 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 0 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 45 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 0 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 18 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 52 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 0 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 42 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 0 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 12 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 22 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 14 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 6 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 1 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 0 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 39 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 67 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 0 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 46 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 0 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 34 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 29 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 25 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 32 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 7 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 1 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 0 } }, "82": { "start": { "line": 83, "column": 0 }, "end": { "line": 83, "column": 31 } }, "83": { "start": { "line": 84, "column": 0 }, "end": { "line": 84, "column": 15 } }, "84": { "start": { "line": 85, "column": 0 }, "end": { "line": 85, "column": 52 } }, "85": { "start": { "line": 86, "column": 0 }, "end": { "line": 86, "column": 67 } }, "86": { "start": { "line": 87, "column": 0 }, "end": { "line": 87, "column": 5 } }, "87": { "start": { "line": 88, "column": 0 }, "end": { "line": 88, "column": 0 } }, "88": { "start": { "line": 89, "column": 0 }, "end": { "line": 89, "column": 45 } }, "89": { "start": { "line": 90, "column": 0 }, "end": { "line": 90, "column": 0 } }, "90": { "start": { "line": 91, "column": 0 }, "end": { "line": 91, "column": 34 } }, "91": { "start": { "line": 92, "column": 0 }, "end": { "line": 92, "column": 0 } }, "92": { "start": { "line": 93, "column": 0 }, "end": { "line": 93, "column": 33 } }, "93": { "start": { "line": 94, "column": 0 }, "end": { "line": 94, "column": 1 } }, "94": { "start": { "line": 95, "column": 0 }, "end": { "line": 95, "column": 0 } }, "95": { "start": { "line": 96, "column": 0 }, "end": { "line": 96, "column": 35 } }, "96": { "start": { "line": 97, "column": 0 }, "end": { "line": 97, "column": 45 } }, "97": { "start": { "line": 98, "column": 0 }, "end": { "line": 98, "column": 0 } }, "98": { "start": { "line": 99, "column": 0 }, "end": { "line": 99, "column": 36 } }, "99": { "start": { "line": 100, "column": 0 }, "end": { "line": 100, "column": 8 } }, "100": { "start": { "line": 101, "column": 0 }, "end": { "line": 101, "column": 23 } }, "101": { "start": { "line": 102, "column": 0 }, "end": { "line": 102, "column": 41 } }, "102": { "start": { "line": 103, "column": 0 }, "end": { "line": 103, "column": 51 } }, "103": { "start": { "line": 104, "column": 0 }, "end": { "line": 104, "column": 7 } }, "104": { "start": { "line": 105, "column": 0 }, "end": { "line": 105, "column": 74 } }, "105": { "start": { "line": 106, "column": 0 }, "end": { "line": 106, "column": 20 } }, "106": { "start": { "line": 107, "column": 0 }, "end": { "line": 107, "column": 5 } }, "107": { "start": { "line": 108, "column": 0 }, "end": { "line": 108, "column": 0 } }, "108": { "start": { "line": 109, "column": 0 }, "end": { "line": 109, "column": 38 } }, "109": { "start": { "line": 110, "column": 0 }, "end": { "line": 110, "column": 26 } }, "110": { "start": { "line": 111, "column": 0 }, "end": { "line": 111, "column": 54 } }, "111": { "start": { "line": 112, "column": 0 }, "end": { "line": 112, "column": 5 } }, "112": { "start": { "line": 113, "column": 0 }, "end": { "line": 113, "column": 0 } }, "113": { "start": { "line": 114, "column": 0 }, "end": { "line": 114, "column": 80 } }, "114": { "start": { "line": 115, "column": 0 }, "end": { "line": 115, "column": 0 } }, "115": { "start": { "line": 116, "column": 0 }, "end": { "line": 116, "column": 37 } }, "116": { "start": { "line": 117, "column": 0 }, "end": { "line": 117, "column": 1 } }, "117": { "start": { "line": 118, "column": 0 }, "end": { "line": 118, "column": 0 } }, "118": { "start": { "line": 119, "column": 0 }, "end": { "line": 119, "column": 57 } }, "119": { "start": { "line": 120, "column": 0 }, "end": { "line": 120, "column": 25 } }, "120": { "start": { "line": 121, "column": 0 }, "end": { "line": 121, "column": 40 } }, "121": { "start": { "line": 122, "column": 0 }, "end": { "line": 122, "column": 48 } }, "122": { "start": { "line": 123, "column": 0 }, "end": { "line": 123, "column": 1 } }, "123": { "start": { "line": 124, "column": 0 }, "end": { "line": 124, "column": 0 } }, "124": { "start": { "line": 125, "column": 0 }, "end": { "line": 125, "column": 28 } }, "125": { "start": { "line": 126, "column": 0 }, "end": { "line": 126, "column": 45 } }, "126": { "start": { "line": 127, "column": 0 }, "end": { "line": 127, "column": 33 } }, "127": { "start": { "line": 128, "column": 0 }, "end": { "line": 128, "column": 1 } }, "128": { "start": { "line": 129, "column": 0 }, "end": { "line": 129, "column": 0 } }, "129": { "start": { "line": 130, "column": 0 }, "end": { "line": 130, "column": 37 } }, "130": { "start": { "line": 131, "column": 0 }, "end": { "line": 131, "column": 28 } }, "131": { "start": { "line": 132, "column": 0 }, "end": { "line": 132, "column": 38 } }, "132": { "start": { "line": 133, "column": 0 }, "end": { "line": 133, "column": 1 } }, "133": { "start": { "line": 134, "column": 0 }, "end": { "line": 134, "column": 0 } }, "134": { "start": { "line": 135, "column": 0 }, "end": { "line": 135, "column": 57 } }, "135": { "start": { "line": 136, "column": 0 }, "end": { "line": 136, "column": 34 } }, "136": { "start": { "line": 137, "column": 0 }, "end": { "line": 137, "column": 38 } }, "137": { "start": { "line": 138, "column": 0 }, "end": { "line": 138, "column": 28 } }, "138": { "start": { "line": 139, "column": 0 }, "end": { "line": 139, "column": 17 } }, "139": { "start": { "line": 140, "column": 0 }, "end": { "line": 140, "column": 19 } }, "140": { "start": { "line": 141, "column": 0 }, "end": { "line": 141, "column": 1 } }, "141": { "start": { "line": 142, "column": 0 }, "end": { "line": 142, "column": 0 } }, "142": { "start": { "line": 143, "column": 0 }, "end": { "line": 143, "column": 35 } }, "143": { "start": { "line": 144, "column": 0 }, "end": { "line": 144, "column": 79 } }, "144": { "start": { "line": 145, "column": 0 }, "end": { "line": 145, "column": 0 } }, "145": { "start": { "line": 146, "column": 0 }, "end": { "line": 146, "column": 43 } }, "146": { "start": { "line": 147, "column": 0 }, "end": { "line": 147, "column": 52 } }, "147": { "start": { "line": 148, "column": 0 }, "end": { "line": 148, "column": 50 } }, "148": { "start": { "line": 149, "column": 0 }, "end": { "line": 149, "column": 0 } }, "149": { "start": { "line": 150, "column": 0 }, "end": { "line": 150, "column": 21 } }, "150": { "start": { "line": 151, "column": 0 }, "end": { "line": 151, "column": 47 } }, "151": { "start": { "line": 152, "column": 0 }, "end": { "line": 152, "column": 14 } }, "152": { "start": { "line": 153, "column": 0 }, "end": { "line": 153, "column": 18 } }, "153": { "start": { "line": 154, "column": 0 }, "end": { "line": 154, "column": 17 } }, "154": { "start": { "line": 155, "column": 0 }, "end": { "line": 155, "column": 33 } }, "155": { "start": { "line": 156, "column": 0 }, "end": { "line": 156, "column": 20 } }, "156": { "start": { "line": 157, "column": 0 }, "end": { "line": 157, "column": 19 } }, "157": { "start": { "line": 158, "column": 0 }, "end": { "line": 158, "column": 21 } }, "158": { "start": { "line": 159, "column": 0 }, "end": { "line": 159, "column": 26 } }, "159": { "start": { "line": 160, "column": 0 }, "end": { "line": 160, "column": 43 } }, "160": { "start": { "line": 161, "column": 0 }, "end": { "line": 161, "column": 26 } }, "161": { "start": { "line": 162, "column": 0 }, "end": { "line": 162, "column": 7 } }, "162": { "start": { "line": 163, "column": 0 }, "end": { "line": 163, "column": 0 } }, "163": { "start": { "line": 164, "column": 0 }, "end": { "line": 164, "column": 33 } }, "164": { "start": { "line": 165, "column": 0 }, "end": { "line": 165, "column": 1 } }, "165": { "start": { "line": 166, "column": 0 }, "end": { "line": 166, "column": 0 } }, "166": { "start": { "line": 167, "column": 0 }, "end": { "line": 167, "column": 31 } }, "167": { "start": { "line": 168, "column": 0 }, "end": { "line": 168, "column": 43 } }, "168": { "start": { "line": 169, "column": 0 }, "end": { "line": 169, "column": 1 } }, "169": { "start": { "line": 170, "column": 0 }, "end": { "line": 170, "column": 0 } }, "170": { "start": { "line": 171, "column": 0 }, "end": { "line": 171, "column": 30 } }, "171": { "start": { "line": 172, "column": 0 }, "end": { "line": 172, "column": 50 } }, "172": { "start": { "line": 173, "column": 0 }, "end": { "line": 173, "column": 1 } }, "173": { "start": { "line": 174, "column": 0 }, "end": { "line": 174, "column": 0 } }, "174": { "start": { "line": 175, "column": 0 }, "end": { "line": 175, "column": 32 } }, "175": { "start": { "line": 176, "column": 0 }, "end": { "line": 176, "column": 11 } }, "176": { "start": { "line": 177, "column": 0 }, "end": { "line": 177, "column": 11 } }, "177": { "start": { "line": 178, "column": 0 }, "end": { "line": 178, "column": 18 } }, "178": { "start": { "line": 179, "column": 0 }, "end": { "line": 179, "column": 17 } }, "179": { "start": { "line": 180, "column": 0 }, "end": { "line": 180, "column": 14 } }, "180": { "start": { "line": 181, "column": 0 }, "end": { "line": 181, "column": 13 } }, "181": { "start": { "line": 182, "column": 0 }, "end": { "line": 182, "column": 16 } }, "182": { "start": { "line": 183, "column": 0 }, "end": { "line": 183, "column": 16 } }, "183": { "start": { "line": 184, "column": 0 }, "end": { "line": 184, "column": 19 } }, "184": { "start": { "line": 185, "column": 0 }, "end": { "line": 185, "column": 16 } }, "185": { "start": { "line": 186, "column": 0 }, "end": { "line": 186, "column": 12 } }, "186": { "start": { "line": 187, "column": 0 }, "end": { "line": 187, "column": 11 } }, "187": { "start": { "line": 188, "column": 0 }, "end": { "line": 188, "column": 18 } }, "188": { "start": { "line": 189, "column": 0 }, "end": { "line": 189, "column": 17 } }, "189": { "start": { "line": 190, "column": 0 }, "end": { "line": 190, "column": 14 } }, "190": { "start": { "line": 191, "column": 0 }, "end": { "line": 191, "column": 13 } }, "191": { "start": { "line": 192, "column": 0 }, "end": { "line": 192, "column": 16 } }, "192": { "start": { "line": 193, "column": 0 }, "end": { "line": 193, "column": 16 } }, "193": { "start": { "line": 194, "column": 0 }, "end": { "line": 194, "column": 19 } }, "194": { "start": { "line": 195, "column": 0 }, "end": { "line": 195, "column": 6 } }, "195": { "start": { "line": 196, "column": 0 }, "end": { "line": 196, "column": 1 } }, "196": { "start": { "line": 197, "column": 0 }, "end": { "line": 197, "column": 0 } }, "197": { "start": { "line": 198, "column": 0 }, "end": { "line": 198, "column": 55 } }, "198": { "start": { "line": 199, "column": 0 }, "end": { "line": 199, "column": 16 } }, "199": { "start": { "line": 200, "column": 0 }, "end": { "line": 200, "column": 17 } }, "200": { "start": { "line": 201, "column": 0 }, "end": { "line": 201, "column": 91 } }, "201": { "start": { "line": 202, "column": 0 }, "end": { "line": 202, "column": 84 } }, "202": { "start": { "line": 203, "column": 0 }, "end": { "line": 203, "column": 54 } }, "203": { "start": { "line": 204, "column": 0 }, "end": { "line": 204, "column": 10 } }, "204": { "start": { "line": 205, "column": 0 }, "end": { "line": 205, "column": 12 } }, "205": { "start": { "line": 206, "column": 0 }, "end": { "line": 206, "column": 133 } }, "206": { "start": { "line": 207, "column": 0 }, "end": { "line": 207, "column": 69 } }, "207": { "start": { "line": 208, "column": 0 }, "end": { "line": 208, "column": 5 } }, "208": { "start": { "line": 209, "column": 0 }, "end": { "line": 209, "column": 0 } }, "209": { "start": { "line": 210, "column": 0 }, "end": { "line": 210, "column": 21 } }, "210": { "start": { "line": 211, "column": 0 }, "end": { "line": 211, "column": 26 } }, "211": { "start": { "line": 212, "column": 0 }, "end": { "line": 212, "column": 59 } }, "212": { "start": { "line": 213, "column": 0 }, "end": { "line": 213, "column": 36 } }, "213": { "start": { "line": 214, "column": 0 }, "end": { "line": 214, "column": 38 } }, "214": { "start": { "line": 215, "column": 0 }, "end": { "line": 215, "column": 20 } }, "215": { "start": { "line": 216, "column": 0 }, "end": { "line": 216, "column": 7 } }, "216": { "start": { "line": 217, "column": 0 }, "end": { "line": 217, "column": 1 } }, "217": { "start": { "line": 218, "column": 0 }, "end": { "line": 218, "column": 0 } }, "218": { "start": { "line": 219, "column": 0 }, "end": { "line": 219, "column": 58 } }, "219": { "start": { "line": 220, "column": 0 }, "end": { "line": 220, "column": 16 } }, "220": { "start": { "line": 221, "column": 0 }, "end": { "line": 221, "column": 17 } }, "221": { "start": { "line": 222, "column": 0 }, "end": { "line": 222, "column": 143 } }, "222": { "start": { "line": 223, "column": 0 }, "end": { "line": 223, "column": 12 } }, "223": { "start": { "line": 224, "column": 0 }, "end": { "line": 224, "column": 130 } }, "224": { "start": { "line": 225, "column": 0 }, "end": { "line": 225, "column": 5 } }, "225": { "start": { "line": 226, "column": 0 }, "end": { "line": 226, "column": 0 } }, "226": { "start": { "line": 227, "column": 0 }, "end": { "line": 227, "column": 21 } }, "227": { "start": { "line": 228, "column": 0 }, "end": { "line": 228, "column": 18 } }, "228": { "start": { "line": 229, "column": 0 }, "end": { "line": 229, "column": 71 } }, "229": { "start": { "line": 230, "column": 0 }, "end": { "line": 230, "column": 48 } }, "230": { "start": { "line": 231, "column": 0 }, "end": { "line": 231, "column": 81 } }, "231": { "start": { "line": 232, "column": 0 }, "end": { "line": 232, "column": 27 } }, "232": { "start": { "line": 233, "column": 0 }, "end": { "line": 233, "column": 7 } }, "233": { "start": { "line": 234, "column": 0 }, "end": { "line": 234, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 44, "26": 44, "27": 11, "28": 11, "29": 11, "30": 11, "31": 44, "32": 44, "33": 0, "34": 0, "35": 0, "36": 11, "37": 11, "38": 11, "39": 44, "40": 0, "41": 0, "42": 0, "43": 0, "44": 1, "45": 6, "46": 6, "47": 6, "48": 1, "49": 1, "50": 1, "51": 1, "52": 1, "53": 1, "54": 1, "55": 1, "56": 1, "57": 1, "58": 1, "59": 1, "60": 1, "61": 1, "62": 1, "63": 1, "64": 6, "65": 0, "66": 0, "67": 0, "68": 0, "69": 1, "70": 0, "71": 0, "72": 0, "73": 0, "74": 0, "75": 0, "76": 0, "77": 0, "78": 0, "79": 0, "80": 0, "81": 1, "82": 3, "83": 3, "84": 3, "85": 0, "86": 0, "87": 1, "88": 3, "89": 0, "90": 0, "91": 0, "92": 0, "93": 0, "94": 1, "95": 6, "96": 6, "97": 2, "98": 2, "99": 2, "100": 6, "101": 1, "102": 6, "103": 6, "104": 1, "105": 1, "106": 1, "107": 1, "108": 1, "109": 6, "110": 0, "111": 0, "112": 1, "113": 1, "114": 1, "115": 6, "116": 0, "117": 1, "118": 1, "119": 2, "120": 2, "121": 2, "122": 0, "123": 1, "124": 2, "125": 2, "126": 2, "127": 0, "128": 1, "129": 1, "130": 0, "131": 0, "132": 0, "133": 1, "134": 1, "135": 22, "136": 22, "137": 22, "138": 11, "139": 22, "140": 0, "141": 1, "142": 6, "143": 6, "144": 6, "145": 6, "146": 6, "147": 2, "148": 2, "149": 2, "150": 6, "151": 1, "152": 1, "153": 1, "154": 1, "155": 1, "156": 1, "157": 1, "158": 1, "159": 1, "160": 1, "161": 1, "162": 1, "163": 6, "164": 0, "165": 1, "166": 4, "167": 4, "168": 0, "169": 1, "170": 2, "171": 2, "172": 2, "173": 1, "174": 11, "175": 11, "176": 11, "177": 11, "178": 11, "179": 11, "180": 11, "181": 11, "182": 11, "183": 11, "184": 11, "185": 11, "186": 11, "187": 11, "188": 11, "189": 11, "190": 11, "191": 11, "192": 11, "193": 11, "194": 11, "195": 11, "196": 1, "197": 0, "198": 0, "199": 0, "200": 0, "201": 0, "202": 0, "203": 0, "204": 0, "205": 0, "206": 0, "207": 0, "208": 0, "209": 0, "210": 0, "211": 0, "212": 0, "213": 0, "214": 0, "215": 0, "216": 0, "217": 1, "218": 0, "219": 0, "220": 0, "221": 0, "222": 0, "223": 0, "224": 0, "225": 0, "226": 0, "227": 0, "228": 0, "229": 0, "230": 0, "231": 0, "232": 0, "233": 0 }, "branchMap": { "0": { "type": "branch", "line": 234, "loc": { "start": { "line": 234, "column": 1 }, "end": { "line": 234, "column": 1 } }, "locations": [ { "start": { "line": 234, "column": 1 }, "end": { "line": 234, "column": 1 } } ] }, "1": { "type": "branch", "line": 234, "loc": { "start": { "line": 234, "column": 1 }, "end": { "line": 234, "column": 1 } }, "locations": [ { "start": { "line": 234, "column": 1 }, "end": { "line": 234, "column": 1 } } ] }, "2": { "type": "branch", "line": 26, "loc": { "start": { "line": 26, "column": 0 }, "end": { "line": 44, "column": 1 } }, "locations": [ { "start": { "line": 26, "column": 0 }, "end": { "line": 44, "column": 1 } } ] }, "3": { "type": "branch", "line": 27, "loc": { "start": { "line": 27, "column": 4 }, "end": { "line": 32, "column": 10 } }, "locations": [ { "start": { "line": 27, "column": 4 }, "end": { "line": 32, "column": 10 } } ] }, "4": { "type": "branch", "line": 33, "loc": { "start": { "line": 33, "column": 6 }, "end": { "line": 36, "column": 5 } }, "locations": [ { "start": { "line": 33, "column": 6 }, "end": { "line": 36, "column": 5 } } ] }, "5": { "type": "branch", "line": 36, "loc": { "start": { "line": 36, "column": 5 }, "end": { "line": 40, "column": 11 } }, "locations": [ { "start": { "line": 36, "column": 5 }, "end": { "line": 40, "column": 11 } } ] }, "6": { "type": "branch", "line": 40, "loc": { "start": { "line": 40, "column": 4 }, "end": { "line": 44, "column": 1 } }, "locations": [ { "start": { "line": 40, "column": 4 }, "end": { "line": 44, "column": 1 } } ] }, "7": { "type": "branch", "line": 46, "loc": { "start": { "line": 46, "column": 0 }, "end": { "line": 69, "column": 1 } }, "locations": [ { "start": { "line": 46, "column": 0 }, "end": { "line": 69, "column": 1 } } ] }, "8": { "type": "branch", "line": 48, "loc": { "start": { "line": 48, "column": 4 }, "end": { "line": 48, "column": 8 } }, "locations": [ { "start": { "line": 48, "column": 4 }, "end": { "line": 48, "column": 8 } } ] }, "9": { "type": "branch", "line": 48, "loc": { "start": { "line": 48, "column": 51 }, "end": { "line": 65, "column": 11 } }, "locations": [ { "start": { "line": 48, "column": 51 }, "end": { "line": 65, "column": 11 } } ] }, "10": { "type": "branch", "line": 65, "loc": { "start": { "line": 65, "column": 4 }, "end": { "line": 69, "column": 1 } }, "locations": [ { "start": { "line": 65, "column": 4 }, "end": { "line": 69, "column": 1 } } ] }, "11": { "type": "branch", "line": 83, "loc": { "start": { "line": 83, "column": 0 }, "end": { "line": 94, "column": 1 } }, "locations": [ { "start": { "line": 83, "column": 0 }, "end": { "line": 94, "column": 1 } } ] }, "12": { "type": "branch", "line": 85, "loc": { "start": { "line": 85, "column": 4 }, "end": { "line": 85, "column": 8 } }, "locations": [ { "start": { "line": 85, "column": 4 }, "end": { "line": 85, "column": 8 } } ] }, "13": { "type": "branch", "line": 85, "loc": { "start": { "line": 85, "column": 51 }, "end": { "line": 87, "column": 5 } }, "locations": [ { "start": { "line": 85, "column": 51 }, "end": { "line": 87, "column": 5 } } ] }, "14": { "type": "branch", "line": 87, "loc": { "start": { "line": 87, "column": 5 }, "end": { "line": 89, "column": 10 } }, "locations": [ { "start": { "line": 87, "column": 5 }, "end": { "line": 89, "column": 10 } } ] }, "15": { "type": "branch", "line": 89, "loc": { "start": { "line": 89, "column": 4 }, "end": { "line": 94, "column": 1 } }, "locations": [ { "start": { "line": 89, "column": 4 }, "end": { "line": 94, "column": 1 } } ] }, "16": { "type": "branch", "line": 96, "loc": { "start": { "line": 96, "column": 0 }, "end": { "line": 117, "column": 1 } }, "locations": [ { "start": { "line": 96, "column": 0 }, "end": { "line": 117, "column": 1 } } ] }, "17": { "type": "branch", "line": 97, "loc": { "start": { "line": 97, "column": 37 }, "end": { "line": 101, "column": 14 } }, "locations": [ { "start": { "line": 97, "column": 37 }, "end": { "line": 101, "column": 14 } } ] }, "18": { "type": "branch", "line": 101, "loc": { "start": { "line": 101, "column": 8 }, "end": { "line": 102, "column": 41 } }, "locations": [ { "start": { "line": 101, "column": 8 }, "end": { "line": 102, "column": 41 } } ] }, "19": { "type": "branch", "line": 101, "loc": { "start": { "line": 101, "column": 8 }, "end": { "line": 103, "column": 28 } }, "locations": [ { "start": { "line": 101, "column": 8 }, "end": { "line": 103, "column": 28 } } ] }, "20": { "type": "branch", "line": 104, "loc": { "start": { "line": 104, "column": 6 }, "end": { "line": 110, "column": 8 } }, "locations": [ { "start": { "line": 104, "column": 6 }, "end": { "line": 110, "column": 8 } } ] }, "21": { "type": "branch", "line": 110, "loc": { "start": { "line": 110, "column": 25 }, "end": { "line": 112, "column": 5 } }, "locations": [ { "start": { "line": 110, "column": 25 }, "end": { "line": 112, "column": 5 } } ] }, "22": { "type": "branch", "line": 112, "loc": { "start": { "line": 112, "column": 5 }, "end": { "line": 116, "column": 11 } }, "locations": [ { "start": { "line": 112, "column": 5 }, "end": { "line": 116, "column": 11 } } ] }, "23": { "type": "branch", "line": 116, "loc": { "start": { "line": 116, "column": 4 }, "end": { "line": 117, "column": 1 } }, "locations": [ { "start": { "line": 116, "column": 4 }, "end": { "line": 117, "column": 1 } } ] }, "24": { "type": "branch", "line": 120, "loc": { "start": { "line": 120, "column": 0 }, "end": { "line": 123, "column": 1 } }, "locations": [ { "start": { "line": 120, "column": 0 }, "end": { "line": 123, "column": 1 } } ] }, "25": { "type": "branch", "line": 121, "loc": { "start": { "line": 121, "column": 4 }, "end": { "line": 122, "column": 11 } }, "locations": [ { "start": { "line": 121, "column": 4 }, "end": { "line": 122, "column": 11 } } ] }, "26": { "type": "branch", "line": 122, "loc": { "start": { "line": 122, "column": 4 }, "end": { "line": 123, "column": 1 } }, "locations": [ { "start": { "line": 122, "column": 4 }, "end": { "line": 123, "column": 1 } } ] }, "27": { "type": "branch", "line": 122, "loc": { "start": { "line": 122, "column": 25 }, "end": { "line": 122, "column": 44 } }, "locations": [ { "start": { "line": 122, "column": 25 }, "end": { "line": 122, "column": 44 } } ] }, "28": { "type": "branch", "line": 125, "loc": { "start": { "line": 125, "column": 0 }, "end": { "line": 128, "column": 1 } }, "locations": [ { "start": { "line": 125, "column": 0 }, "end": { "line": 128, "column": 1 } } ] }, "29": { "type": "branch", "line": 126, "loc": { "start": { "line": 126, "column": 4 }, "end": { "line": 127, "column": 11 } }, "locations": [ { "start": { "line": 126, "column": 4 }, "end": { "line": 127, "column": 11 } } ] }, "30": { "type": "branch", "line": 127, "loc": { "start": { "line": 127, "column": 4 }, "end": { "line": 128, "column": 1 } }, "locations": [ { "start": { "line": 127, "column": 4 }, "end": { "line": 128, "column": 1 } } ] }, "31": { "type": "branch", "line": 136, "loc": { "start": { "line": 136, "column": 0 }, "end": { "line": 141, "column": 1 } }, "locations": [ { "start": { "line": 136, "column": 0 }, "end": { "line": 141, "column": 1 } } ] }, "32": { "type": "branch", "line": 138, "loc": { "start": { "line": 138, "column": 15 }, "end": { "line": 140, "column": 11 } }, "locations": [ { "start": { "line": 138, "column": 15 }, "end": { "line": 140, "column": 11 } } ] }, "33": { "type": "branch", "line": 140, "loc": { "start": { "line": 140, "column": 4 }, "end": { "line": 141, "column": 1 } }, "locations": [ { "start": { "line": 140, "column": 4 }, "end": { "line": 141, "column": 1 } } ] }, "34": { "type": "branch", "line": 143, "loc": { "start": { "line": 143, "column": 0 }, "end": { "line": 165, "column": 1 } }, "locations": [ { "start": { "line": 143, "column": 0 }, "end": { "line": 165, "column": 1 } } ] }, "35": { "type": "branch", "line": 147, "loc": { "start": { "line": 147, "column": 4 }, "end": { "line": 151, "column": 10 } }, "locations": [ { "start": { "line": 147, "column": 4 }, "end": { "line": 151, "column": 10 } } ] }, "36": { "type": "branch", "line": 151, "loc": { "start": { "line": 151, "column": 4 }, "end": { "line": 164, "column": 11 } }, "locations": [ { "start": { "line": 151, "column": 4 }, "end": { "line": 164, "column": 11 } } ] }, "37": { "type": "branch", "line": 164, "loc": { "start": { "line": 164, "column": 4 }, "end": { "line": 165, "column": 1 } }, "locations": [ { "start": { "line": 164, "column": 4 }, "end": { "line": 165, "column": 1 } } ] }, "38": { "type": "branch", "line": 167, "loc": { "start": { "line": 167, "column": 0 }, "end": { "line": 169, "column": 1 } }, "locations": [ { "start": { "line": 167, "column": 0 }, "end": { "line": 169, "column": 1 } } ] }, "39": { "type": "branch", "line": 168, "loc": { "start": { "line": 168, "column": 4 }, "end": { "line": 169, "column": 1 } }, "locations": [ { "start": { "line": 168, "column": 4 }, "end": { "line": 169, "column": 1 } } ] }, "40": { "type": "branch", "line": 171, "loc": { "start": { "line": 171, "column": 0 }, "end": { "line": 173, "column": 1 } }, "locations": [ { "start": { "line": 171, "column": 0 }, "end": { "line": 173, "column": 1 } } ] }, "41": { "type": "branch", "line": 175, "loc": { "start": { "line": 175, "column": 0 }, "end": { "line": 196, "column": 1 } }, "locations": [ { "start": { "line": 175, "column": 0 }, "end": { "line": 196, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 44 ], "3": [ 11 ], "4": [ 0 ], "5": [ 11 ], "6": [ 0 ], "7": [ 6 ], "8": [ 2 ], "9": [ 1 ], "10": [ 0 ], "11": [ 3 ], "12": [ 1 ], "13": [ 0 ], "14": [ 1 ], "15": [ 0 ], "16": [ 6 ], "17": [ 2 ], "18": [ 1 ], "19": [ 1 ], "20": [ 1 ], "21": [ 0 ], "22": [ 1 ], "23": [ 0 ], "24": [ 2 ], "25": [ 1 ], "26": [ 0 ], "27": [ 4 ], "28": [ 2 ], "29": [ 1 ], "30": [ 0 ], "31": [ 22 ], "32": [ 11 ], "33": [ 0 ], "34": [ 6 ], "35": [ 2 ], "36": [ 1 ], "37": [ 0 ], "38": [ 4 ], "39": [ 0 ], "40": [ 2 ], "41": [ 11 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 234, "column": 1 }, "end": { "line": 234, "column": 1 } }, "loc": { "start": { "line": 234, "column": 1 }, "end": { "line": 234, "column": 1 } }, "line": 234 }, "1": { "name": "login", "decl": { "start": { "line": 26, "column": 0 }, "end": { "line": 44, "column": 1 } }, "loc": { "start": { "line": 26, "column": 0 }, "end": { "line": 44, "column": 1 } }, "line": 26 }, "2": { "name": "register", "decl": { "start": { "line": 46, "column": 0 }, "end": { "line": 69, "column": 1 } }, "loc": { "start": { "line": 46, "column": 0 }, "end": { "line": 69, "column": 1 } }, "line": 46 }, "3": { "name": "verifyEmail", "decl": { "start": { "line": 71, "column": 0 }, "end": { "line": 81, "column": 1 } }, "loc": { "start": { "line": 71, "column": 0 }, "end": { "line": 81, "column": 1 } }, "line": 71 }, "4": { "name": "create", "decl": { "start": { "line": 83, "column": 0 }, "end": { "line": 94, "column": 1 } }, "loc": { "start": { "line": 83, "column": 0 }, "end": { "line": 94, "column": 1 } }, "line": 83 }, "5": { "name": "update", "decl": { "start": { "line": 96, "column": 0 }, "end": { "line": 117, "column": 1 } }, "loc": { "start": { "line": 96, "column": 0 }, "end": { "line": 117, "column": 1 } }, "line": 96 }, "6": { "name": "getAll", "decl": { "start": { "line": 120, "column": 0 }, "end": { "line": 123, "column": 1 } }, "loc": { "start": { "line": 120, "column": 0 }, "end": { "line": 123, "column": 1 } }, "line": 120 }, "7": { "name": "getById", "decl": { "start": { "line": 125, "column": 0 }, "end": { "line": 128, "column": 1 } }, "loc": { "start": { "line": 125, "column": 0 }, "end": { "line": 128, "column": 1 } }, "line": 125 }, "8": { "name": "_delete", "decl": { "start": { "line": 131, "column": 0 }, "end": { "line": 133, "column": 1 } }, "loc": { "start": { "line": 131, "column": 0 }, "end": { "line": 133, "column": 1 } }, "line": 131 }, "9": { "name": "getAccount", "decl": { "start": { "line": 136, "column": 0 }, "end": { "line": 141, "column": 1 } }, "loc": { "start": { "line": 136, "column": 0 }, "end": { "line": 141, "column": 1 } }, "line": 136 }, "10": { "name": "insertUser", "decl": { "start": { "line": 143, "column": 0 }, "end": { "line": 165, "column": 1 } }, "loc": { "start": { "line": 143, "column": 0 }, "end": { "line": 165, "column": 1 } }, "line": 143 }, "11": { "name": "hash", "decl": { "start": { "line": 167, "column": 0 }, "end": { "line": 169, "column": 1 } }, "loc": { "start": { "line": 167, "column": 0 }, "end": { "line": 169, "column": 1 } }, "line": 167 }, "12": { "name": "randomTokenString", "decl": { "start": { "line": 171, "column": 0 }, "end": { "line": 173, "column": 1 } }, "loc": { "start": { "line": 171, "column": 0 }, "end": { "line": 173, "column": 1 } }, "line": 171 }, "13": { "name": "basicDetails", "decl": { "start": { "line": 175, "column": 0 }, "end": { "line": 196, "column": 1 } }, "loc": { "start": { "line": 175, "column": 0 }, "end": { "line": 196, "column": 1 } }, "line": 175 }, "14": { "name": "sendVerificationEmail", "decl": { "start": { "line": 198, "column": 0 }, "end": { "line": 217, "column": 1 } }, "loc": { "start": { "line": 198, "column": 0 }, "end": { "line": 217, "column": 1 } }, "line": 198 }, "15": { "name": "sendAlreadyRegisteredEmail", "decl": { "start": { "line": 219, "column": 0 }, "end": { "line": 234, "column": 1 } }, "loc": { "start": { "line": 219, "column": 0 }, "end": { "line": 234, "column": 1 } }, "line": 219 } }, "f": { "0": 1, "1": 44, "2": 6, "3": 0, "4": 3, "5": 6, "6": 2, "7": 2, "8": 0, "9": 22, "10": 6, "11": 4, "12": 2, "13": 11, "14": 0, "15": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/auth/auth.validators.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 27 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 70 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 44 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 43 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 42 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 61 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 48 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 47 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 49 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 76 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 7 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 39 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 2 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 0 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 44 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 31 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 47 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 49 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 7 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 39 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 2 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 0 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 44 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 25 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 42 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 41 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 46 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 44 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 60 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 48 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 75 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 6 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 0 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 49 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 79 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 0 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 39 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 2 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 0 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 49 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 31 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 39 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 7 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 39 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 4, "5": 4, "6": 4, "7": 4, "8": 4, "9": 4, "10": 4, "11": 4, "12": 4, "13": 4, "14": 4, "15": 1, "16": 1, "17": 11, "18": 11, "19": 11, "20": 11, "21": 11, "22": 11, "23": 1, "24": 1, "25": 2, "26": 2, "27": 2, "28": 2, "29": 2, "30": 2, "31": 2, "32": 2, "33": 2, "34": 2, "35": 2, "36": 2, "37": 2, "38": 2, "39": 2, "40": 1, "41": 1, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0 }, "branchMap": { "0": { "type": "branch", "line": 47, "loc": { "start": { "line": 47, "column": 2 }, "end": { "line": 47, "column": 2 } }, "locations": [ { "start": { "line": 47, "column": 2 }, "end": { "line": 47, "column": 2 } } ] }, "1": { "type": "branch", "line": 47, "loc": { "start": { "line": 47, "column": 2 }, "end": { "line": 47, "column": 2 } }, "locations": [ { "start": { "line": 47, "column": 2 }, "end": { "line": 47, "column": 2 } } ] }, "2": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 15, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 23 }, "end": { "line": 15, "column": 2 } } ] }, "3": { "type": "branch", "line": 17, "loc": { "start": { "line": 17, "column": 23 }, "end": { "line": 23, "column": 2 } }, "locations": [ { "start": { "line": 17, "column": 23 }, "end": { "line": 23, "column": 2 } } ] }, "4": { "type": "branch", "line": 25, "loc": { "start": { "line": 25, "column": 23 }, "end": { "line": 40, "column": 2 } }, "locations": [ { "start": { "line": 25, "column": 23 }, "end": { "line": 40, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 4 ], "3": [ 11 ], "4": [ 2 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 47, "column": 2 }, "end": { "line": 47, "column": 2 } }, "loc": { "start": { "line": 47, "column": 2 }, "end": { "line": 47, "column": 2 } }, "line": 47 }, "1": { "name": "Object.<anonymous>.exports.signupSchema", "decl": { "start": { "line": 4, "column": 23 }, "end": { "line": 15, "column": 2 } }, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 15, "column": 2 } }, "line": 4 }, "2": { "name": "Object.<anonymous>.exports.signinSchema", "decl": { "start": { "line": 17, "column": 23 }, "end": { "line": 23, "column": 2 } }, "loc": { "start": { "line": 17, "column": 23 }, "end": { "line": 23, "column": 2 } }, "line": 17 }, "3": { "name": "Object.<anonymous>.exports.updateSchema", "decl": { "start": { "line": 25, "column": 23 }, "end": { "line": 40, "column": 2 } }, "loc": { "start": { "line": 25, "column": 23 }, "end": { "line": 40, "column": 2 } }, "line": 25 }, "4": { "name": "Object.<anonymous>.exports.verifyEmailSchema", "decl": { "start": { "line": 42, "column": 28 }, "end": { "line": 47, "column": 2 } }, "loc": { "start": { "line": 42, "column": 28 }, "end": { "line": 47, "column": 2 } }, "line": 42 } }, "f": { "0": 1, "1": 4, "2": 11, "3": 2, "4": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 60 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 49 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 29 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 28 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 35 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 5 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 29 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 22 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 5 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 1 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 25 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 3, "7": 3, "8": 1, "9": 1, "10": 0, "11": 0, "12": 1, "13": 1, "14": 1 }, "branchMap": { "0": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 25 }, "end": { "line": 15, "column": 25 } }, "locations": [ { "start": { "line": 15, "column": 25 }, "end": { "line": 15, "column": 25 } } ] }, "1": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 25 }, "end": { "line": 15, "column": 25 } }, "locations": [ { "start": { "line": 15, "column": 25 }, "end": { "line": 15, "column": 25 } } ] }, "2": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "locations": [ { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 3 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 15, "column": 25 }, "end": { "line": 15, "column": 25 } }, "loc": { "start": { "line": 15, "column": 25 }, "end": { "line": 15, "column": 25 } }, "line": 15 }, "1": { "name": "Account", "decl": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "line": 5 }, "2": { "name": "get tableName", "decl": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "line": 6 }, "3": { "name": "get jsonSchema", "decl": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 5 } }, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 5 } }, "line": 10 } }, "f": { "0": 1, "1": 0, "2": 3, "3": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/accounts/accounts.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 44 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 44 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 44 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 70 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 0 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 42 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 22 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 3 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 72 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 24 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 0 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 44 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 9 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 58 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 72 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 12 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 54 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 46 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 11 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 0 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 24 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 35 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 9 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 27 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 21 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 20 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 5 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 2, "14": 2, "15": 2, "16": 2, "17": 2, "18": 2, "19": 2, "20": 1, "21": 1, "22": 1, "23": 2, "24": 0, "25": 0, "26": 1, "27": 1, "28": 2, "29": 0, "30": 0, "31": 1 }, "branchMap": { "0": { "type": "branch", "line": 32, "loc": { "start": { "line": 32, "column": 1 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 32, "column": 1 }, "end": { "line": 32, "column": 1 } } ] }, "1": { "type": "branch", "line": 32, "loc": { "start": { "line": 32, "column": 1 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 32, "column": 1 }, "end": { "line": 32, "column": 1 } } ] }, "2": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 0 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 14, "column": 0 }, "end": { "line": 32, "column": 1 } } ] }, "3": { "type": "branch", "line": 20, "loc": { "start": { "line": 20, "column": 8 }, "end": { "line": 24, "column": 12 } }, "locations": [ { "start": { "line": 20, "column": 8 }, "end": { "line": 24, "column": 12 } } ] }, "4": { "type": "branch", "line": 24, "loc": { "start": { "line": 24, "column": 23 }, "end": { "line": 26, "column": 9 } }, "locations": [ { "start": { "line": 24, "column": 23 }, "end": { "line": 26, "column": 9 } } ] }, "5": { "type": "branch", "line": 26, "loc": { "start": { "line": 26, "column": 9 }, "end": { "line": 29, "column": 6 } }, "locations": [ { "start": { "line": 26, "column": 9 }, "end": { "line": 29, "column": 6 } } ] }, "6": { "type": "branch", "line": 29, "loc": { "start": { "line": 29, "column": 6 }, "end": { "line": 31, "column": 5 } }, "locations": [ { "start": { "line": 29, "column": 6 }, "end": { "line": 31, "column": 5 } } ] }, "7": { "type": "branch", "line": 31, "loc": { "start": { "line": 31, "column": 5 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 31, "column": 5 }, "end": { "line": 32, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 1 ], "4": [ 0 ], "5": [ 1 ], "6": [ 0 ], "7": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 32, "column": 1 }, "end": { "line": 32, "column": 1 } }, "loc": { "start": { "line": 32, "column": 1 }, "end": { "line": 32, "column": 1 } }, "line": 32 }, "1": { "name": "getAccounts", "decl": { "start": { "line": 14, "column": 0 }, "end": { "line": 32, "column": 1 } }, "loc": { "start": { "line": 14, "column": 0 }, "end": { "line": 32, "column": 1 } }, "line": 14 } }, "f": { "0": 1, "1": 2 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 57 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 48 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 29 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 28 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 34 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 5 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 29 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 22 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 5 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 0 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 35 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 69 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 51 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 61 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 50 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 16 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 20 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 53 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 33 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 23 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 59 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 48 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 18 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 14 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 23 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 48 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 36 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 23 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 53 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 60 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 18 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 14 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 20 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 48 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 33 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 23 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 53 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 56 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 18 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 14 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 10 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 5 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 1 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 0 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 25 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 81, "7": 81, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1, "43": 1, "44": 1, "45": 1, "46": 1, "47": 1, "48": 1 }, "branchMap": { "0": { "type": "branch", "line": 49, "loc": { "start": { "line": 49, "column": 25 }, "end": { "line": 49, "column": 25 } }, "locations": [ { "start": { "line": 49, "column": 25 }, "end": { "line": 49, "column": 25 } } ] }, "1": { "type": "branch", "line": 49, "loc": { "start": { "line": 49, "column": 25 }, "end": { "line": 49, "column": 25 } }, "locations": [ { "start": { "line": 49, "column": 25 }, "end": { "line": 49, "column": 25 } } ] }, "2": { "type": "branch", "line": 5, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "locations": [ { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } } ] }, "3": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "locations": [ { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } } ] }, "4": { "type": "branch", "line": 10, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 5 } }, "locations": [ { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 5 } } ] }, "5": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 4 }, "end": { "line": 46, "column": 5 } }, "locations": [ { "start": { "line": 14, "column": 4 }, "end": { "line": 46, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 20 ], "3": [ 81 ], "4": [ 1 ], "5": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 49, "column": 25 }, "end": { "line": 49, "column": 25 } }, "loc": { "start": { "line": 49, "column": 25 }, "end": { "line": 49, "column": 25 } }, "line": 49 }, "1": { "name": "Company", "decl": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "line": 5 }, "2": { "name": "get tableName", "decl": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "line": 6 }, "3": { "name": "get jsonSchema", "decl": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 5 } }, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 12, "column": 5 } }, "line": 10 }, "4": { "name": "get relationMappings", "decl": { "start": { "line": 14, "column": 4 }, "end": { "line": 46, "column": 5 } }, "loc": { "start": { "line": 14, "column": 4 }, "end": { "line": 46, "column": 5 } }, "line": 14 } }, "f": { "0": 1, "1": 20, "2": 81, "3": 1, "4": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 71 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 52 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 58 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 41 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 59 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 0 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 54 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 43 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 46 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 31 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 22 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 3 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 0 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 28 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 45 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 38 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 40 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 0 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 59 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 63 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 53 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 56 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 67 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 70 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 24 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 0 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 33 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 36 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 18 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 25 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 45 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 21 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 1 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 0 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 42 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 18 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 26 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 30 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 55 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 10 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 21 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 1 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 41 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 18 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 36 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 28 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 65 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 9 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 21 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 1 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 41 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 66 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 18 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 38 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 28 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 16 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 51 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 44 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 15 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 73 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 13 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 0 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 30 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 10 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 21 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 1 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 0 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 33 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 42 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 18 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 78 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 45 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 21 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 1 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 0 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 41 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 49 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 18 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 72 } }, "82": { "start": { "line": 83, "column": 0 }, "end": { "line": 83, "column": 21 } }, "83": { "start": { "line": 84, "column": 0 }, "end": { "line": 84, "column": 54 } }, "84": { "start": { "line": 85, "column": 0 }, "end": { "line": 85, "column": 10 } }, "85": { "start": { "line": 86, "column": 0 }, "end": { "line": 86, "column": 21 } }, "86": { "start": { "line": 87, "column": 0 }, "end": { "line": 87, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1, "43": 1, "44": 1, "45": 1, "46": 1, "47": 1, "48": 1, "49": 1, "50": 1, "51": 1, "52": 1, "53": 3, "54": 3, "55": 3, "56": 3, "57": 3, "58": 3, "59": 3, "60": 1, "61": 3, "62": 1, "63": 1, "64": 2, "65": 2, "66": 2, "67": 3, "68": 3, "69": 1, "70": 6, "71": 6, "72": 6, "73": 6, "74": 6, "75": 6, "76": 6, "77": 1, "78": 2, "79": 2, "80": 2, "81": 2, "82": 2, "83": 1, "84": 1, "85": 2, "86": 2 }, "branchMap": { "0": { "type": "branch", "line": 87, "loc": { "start": { "line": 87, "column": 1 }, "end": { "line": 87, "column": 1 } }, "locations": [ { "start": { "line": 87, "column": 1 }, "end": { "line": 87, "column": 1 } } ] }, "1": { "type": "branch", "line": 87, "loc": { "start": { "line": 87, "column": 1 }, "end": { "line": 87, "column": 1 } }, "locations": [ { "start": { "line": 87, "column": 1 }, "end": { "line": 87, "column": 1 } } ] }, "2": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 0 }, "end": { "line": 36, "column": 1 } }, "locations": [ { "start": { "line": 30, "column": 0 }, "end": { "line": 36, "column": 1 } } ] }, "3": { "type": "branch", "line": 34, "loc": { "start": { "line": 34, "column": 15 }, "end": { "line": 34, "column": 30 } }, "locations": [ { "start": { "line": 34, "column": 15 }, "end": { "line": 34, "column": 30 } } ] }, "4": { "type": "branch", "line": 38, "loc": { "start": { "line": 38, "column": 0 }, "end": { "line": 45, "column": 1 } }, "locations": [ { "start": { "line": 38, "column": 0 }, "end": { "line": 45, "column": 1 } } ] }, "5": { "type": "branch", "line": 41, "loc": { "start": { "line": 41, "column": 15 }, "end": { "line": 43, "column": 10 } }, "locations": [ { "start": { "line": 41, "column": 15 }, "end": { "line": 43, "column": 10 } } ] }, "6": { "type": "branch", "line": 46, "loc": { "start": { "line": 46, "column": 0 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 46, "column": 0 }, "end": { "line": 53, "column": 1 } } ] }, "7": { "type": "branch", "line": 49, "loc": { "start": { "line": 49, "column": 15 }, "end": { "line": 50, "column": 49 } }, "locations": [ { "start": { "line": 49, "column": 15 }, "end": { "line": 50, "column": 49 } } ] }, "8": { "type": "branch", "line": 50, "loc": { "start": { "line": 50, "column": 21 }, "end": { "line": 50, "column": 49 } }, "locations": [ { "start": { "line": 50, "column": 21 }, "end": { "line": 50, "column": 49 } } ] }, "9": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 0 }, "end": { "line": 69, "column": 1 } }, "locations": [ { "start": { "line": 54, "column": 0 }, "end": { "line": 69, "column": 1 } } ] }, "10": { "type": "branch", "line": 58, "loc": { "start": { "line": 58, "column": 15 }, "end": { "line": 67, "column": 10 } }, "locations": [ { "start": { "line": 58, "column": 15 }, "end": { "line": 67, "column": 10 } } ] }, "11": { "type": "branch", "line": 60, "loc": { "start": { "line": 60, "column": 16 }, "end": { "line": 61, "column": 44 } }, "locations": [ { "start": { "line": 60, "column": 16 }, "end": { "line": 61, "column": 44 } } ] }, "12": { "type": "branch", "line": 62, "loc": { "start": { "line": 62, "column": 14 }, "end": { "line": 64, "column": 13 } }, "locations": [ { "start": { "line": 62, "column": 14 }, "end": { "line": 64, "column": 13 } } ] }, "13": { "type": "branch", "line": 64, "loc": { "start": { "line": 64, "column": 13 }, "end": { "line": 67, "column": 10 } }, "locations": [ { "start": { "line": 64, "column": 13 }, "end": { "line": 67, "column": 10 } } ] }, "14": { "type": "branch", "line": 71, "loc": { "start": { "line": 71, "column": 0 }, "end": { "line": 77, "column": 1 } }, "locations": [ { "start": { "line": 71, "column": 0 }, "end": { "line": 77, "column": 1 } } ] }, "15": { "type": "branch", "line": 75, "loc": { "start": { "line": 75, "column": 15 }, "end": { "line": 75, "column": 30 } }, "locations": [ { "start": { "line": 75, "column": 15 }, "end": { "line": 75, "column": 30 } } ] }, "16": { "type": "branch", "line": 79, "loc": { "start": { "line": 79, "column": 0 }, "end": { "line": 87, "column": 1 } }, "locations": [ { "start": { "line": 79, "column": 0 }, "end": { "line": 87, "column": 1 } } ] }, "17": { "type": "branch", "line": 83, "loc": { "start": { "line": 83, "column": 14 }, "end": { "line": 85, "column": 10 } }, "locations": [ { "start": { "line": 83, "column": 14 }, "end": { "line": 85, "column": 10 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 1 ], "4": [ 1 ], "5": [ 1 ], "6": [ 1 ], "7": [ 1 ], "8": [ 0 ], "9": [ 3 ], "10": [ 3 ], "11": [ 1 ], "12": [ 1 ], "13": [ 2 ], "14": [ 6 ], "15": [ 2 ], "16": [ 2 ], "17": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 87, "column": 1 }, "end": { "line": 87, "column": 1 } }, "loc": { "start": { "line": 87, "column": 1 }, "end": { "line": 87, "column": 1 } }, "line": 87 }, "1": { "name": "create", "decl": { "start": { "line": 30, "column": 0 }, "end": { "line": 36, "column": 1 } }, "loc": { "start": { "line": 30, "column": 0 }, "end": { "line": 36, "column": 1 } }, "line": 30 }, "2": { "name": "getAllCompanies", "decl": { "start": { "line": 38, "column": 0 }, "end": { "line": 45, "column": 1 } }, "loc": { "start": { "line": 38, "column": 0 }, "end": { "line": 45, "column": 1 } }, "line": 38 }, "3": { "name": "getMyCompanies", "decl": { "start": { "line": 46, "column": 0 }, "end": { "line": 53, "column": 1 } }, "loc": { "start": { "line": 46, "column": 0 }, "end": { "line": 53, "column": 1 } }, "line": 46 }, "4": { "name": "getCompanyById", "decl": { "start": { "line": 54, "column": 0 }, "end": { "line": 69, "column": 1 } }, "loc": { "start": { "line": 54, "column": 0 }, "end": { "line": 69, "column": 1 } }, "line": 54 }, "5": { "name": "update", "decl": { "start": { "line": 71, "column": 0 }, "end": { "line": 77, "column": 1 } }, "loc": { "start": { "line": 71, "column": 0 }, "end": { "line": 77, "column": 1 } }, "line": 71 }, "6": { "name": "_deleteCompany", "decl": { "start": { "line": 79, "column": 0 }, "end": { "line": 87, "column": 1 } }, "loc": { "start": { "line": 79, "column": 0 }, "end": { "line": 87, "column": 1 } }, "line": 79 } }, "f": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 3, "5": 6, "6": 2 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.service.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 52 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 43 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 43 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 18 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 11 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 18 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 20 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 19 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 19 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 12 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 2 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 0 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 31 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 38 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 50 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 66 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 5 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 57 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 19 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 1 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 0 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 51 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 57 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 0 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 19 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 30 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 5 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 0 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 35 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 8 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 22 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 39 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 49 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 7 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 54 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 5 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 0 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 67 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 23 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 9 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 22 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 9 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 6 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 0 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 26 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 1 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 0 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 34 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 44 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 21 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 1 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 0 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 40 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 51 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 26 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 7 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 21 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 1 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 0 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 35 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 45 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 19 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 1 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 0 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 37 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 54 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 0 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 22 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 36 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 21 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 39 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 5 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 0 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 30 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 1 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 0 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 35 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 18 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 41 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 0 } }, "82": { "start": { "line": 83, "column": 0 }, "end": { "line": 83, "column": 4 } }, "83": { "start": { "line": 84, "column": 0 }, "end": { "line": 84, "column": 0 } }, "84": { "start": { "line": 85, "column": 0 }, "end": { "line": 85, "column": 33 } }, "85": { "start": { "line": 86, "column": 0 }, "end": { "line": 86, "column": 0 } }, "86": { "start": { "line": 87, "column": 0 }, "end": { "line": 87, "column": 34 } }, "87": { "start": { "line": 88, "column": 0 }, "end": { "line": 88, "column": 41 } }, "88": { "start": { "line": 89, "column": 0 }, "end": { "line": 89, "column": 28 } }, "89": { "start": { "line": 90, "column": 0 }, "end": { "line": 90, "column": 17 } }, "90": { "start": { "line": 91, "column": 0 }, "end": { "line": 91, "column": 19 } }, "91": { "start": { "line": 92, "column": 0 }, "end": { "line": 92, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 3, "14": 3, "15": 3, "16": 0, "17": 0, "18": 1, "19": 1, "20": 3, "21": 0, "22": 1, "23": 17, "24": 17, "25": 6, "26": 17, "27": 2, "28": 2, "29": 4, "30": 4, "31": 4, "32": 4, "33": 3, "34": 17, "35": 17, "36": 2, "37": 2, "38": 2, "39": 2, "40": 2, "41": 2, "42": 2, "43": 2, "44": 2, "45": 2, "46": 17, "47": 0, "48": 1, "49": 2, "50": 2, "51": 2, "52": 0, "53": 1, "54": 2, "55": 2, "56": 1, "57": 1, "58": 2, "59": 0, "60": 1, "61": 6, "62": 6, "63": 6, "64": 0, "65": 1, "66": 5, "67": 5, "68": 2, "69": 5, "70": 1, "71": 1, "72": 1, "73": 1, "74": 1, "75": 5, "76": 0, "77": 1, "78": 1, "79": 1, "80": 1, "81": 1, "82": 1, "83": 1, "84": 1, "85": 1, "86": 30, "87": 30, "88": 30, "89": 15, "90": 30, "91": 0 }, "branchMap": { "0": { "type": "branch", "line": 92, "loc": { "start": { "line": 92, "column": 1 }, "end": { "line": 92, "column": 1 } }, "locations": [ { "start": { "line": 92, "column": 1 }, "end": { "line": 92, "column": 1 } } ] }, "1": { "type": "branch", "line": 92, "loc": { "start": { "line": 92, "column": 1 }, "end": { "line": 92, "column": 1 } }, "locations": [ { "start": { "line": 92, "column": 1 }, "end": { "line": 92, "column": 1 } } ] }, "2": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 0 }, "end": { "line": 22, "column": 1 } }, "locations": [ { "start": { "line": 14, "column": 0 }, "end": { "line": 22, "column": 1 } } ] }, "3": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 4 }, "end": { "line": 16, "column": 8 } }, "locations": [ { "start": { "line": 16, "column": 4 }, "end": { "line": 16, "column": 8 } } ] }, "4": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 49 }, "end": { "line": 18, "column": 5 } }, "locations": [ { "start": { "line": 16, "column": 49 }, "end": { "line": 18, "column": 5 } } ] }, "5": { "type": "branch", "line": 18, "loc": { "start": { "line": 18, "column": 5 }, "end": { "line": 21, "column": 11 } }, "locations": [ { "start": { "line": 18, "column": 5 }, "end": { "line": 21, "column": 11 } } ] }, "6": { "type": "branch", "line": 21, "loc": { "start": { "line": 21, "column": 4 }, "end": { "line": 22, "column": 1 } }, "locations": [ { "start": { "line": 21, "column": 4 }, "end": { "line": 22, "column": 1 } } ] }, "7": { "type": "branch", "line": 24, "loc": { "start": { "line": 24, "column": 0 }, "end": { "line": 48, "column": 1 } }, "locations": [ { "start": { "line": 24, "column": 0 }, "end": { "line": 48, "column": 1 } } ] }, "8": { "type": "branch", "line": 25, "loc": { "start": { "line": 25, "column": 4 }, "end": { "line": 27, "column": 8 } }, "locations": [ { "start": { "line": 25, "column": 4 }, "end": { "line": 27, "column": 8 } } ] }, "9": { "type": "branch", "line": 27, "loc": { "start": { "line": 27, "column": 18 }, "end": { "line": 29, "column": 5 } }, "locations": [ { "start": { "line": 27, "column": 18 }, "end": { "line": 29, "column": 5 } } ] }, "10": { "type": "branch", "line": 29, "loc": { "start": { "line": 29, "column": 5 }, "end": { "line": 34, "column": 39 } }, "locations": [ { "start": { "line": 29, "column": 5 }, "end": { "line": 34, "column": 39 } } ] }, "11": { "type": "branch", "line": 33, "loc": { "start": { "line": 33, "column": 8 }, "end": { "line": 35, "column": 28 } }, "locations": [ { "start": { "line": 33, "column": 8 }, "end": { "line": 35, "column": 28 } } ] }, "12": { "type": "branch", "line": 36, "loc": { "start": { "line": 36, "column": 6 }, "end": { "line": 47, "column": 11 } }, "locations": [ { "start": { "line": 36, "column": 6 }, "end": { "line": 47, "column": 11 } } ] }, "13": { "type": "branch", "line": 47, "loc": { "start": { "line": 47, "column": 4 }, "end": { "line": 48, "column": 1 } }, "locations": [ { "start": { "line": 47, "column": 4 }, "end": { "line": 48, "column": 1 } } ] }, "14": { "type": "branch", "line": 50, "loc": { "start": { "line": 50, "column": 0 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 50, "column": 0 }, "end": { "line": 53, "column": 1 } } ] }, "15": { "type": "branch", "line": 51, "loc": { "start": { "line": 51, "column": 4 }, "end": { "line": 52, "column": 11 } }, "locations": [ { "start": { "line": 51, "column": 4 }, "end": { "line": 52, "column": 11 } } ] }, "16": { "type": "branch", "line": 52, "loc": { "start": { "line": 52, "column": 4 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 52, "column": 4 }, "end": { "line": 53, "column": 1 } } ] }, "17": { "type": "branch", "line": 55, "loc": { "start": { "line": 55, "column": 0 }, "end": { "line": 60, "column": 1 } }, "locations": [ { "start": { "line": 55, "column": 0 }, "end": { "line": 60, "column": 1 } } ] }, "18": { "type": "branch", "line": 56, "loc": { "start": { "line": 56, "column": 4 }, "end": { "line": 59, "column": 11 } }, "locations": [ { "start": { "line": 56, "column": 4 }, "end": { "line": 59, "column": 11 } } ] }, "19": { "type": "branch", "line": 59, "loc": { "start": { "line": 59, "column": 4 }, "end": { "line": 60, "column": 1 } }, "locations": [ { "start": { "line": 59, "column": 4 }, "end": { "line": 60, "column": 1 } } ] }, "20": { "type": "branch", "line": 62, "loc": { "start": { "line": 62, "column": 0 }, "end": { "line": 65, "column": 1 } }, "locations": [ { "start": { "line": 62, "column": 0 }, "end": { "line": 65, "column": 1 } } ] }, "21": { "type": "branch", "line": 63, "loc": { "start": { "line": 63, "column": 4 }, "end": { "line": 64, "column": 11 } }, "locations": [ { "start": { "line": 63, "column": 4 }, "end": { "line": 64, "column": 11 } } ] }, "22": { "type": "branch", "line": 64, "loc": { "start": { "line": 64, "column": 4 }, "end": { "line": 65, "column": 1 } }, "locations": [ { "start": { "line": 64, "column": 4 }, "end": { "line": 65, "column": 1 } } ] }, "23": { "type": "branch", "line": 67, "loc": { "start": { "line": 67, "column": 0 }, "end": { "line": 77, "column": 1 } }, "locations": [ { "start": { "line": 67, "column": 0 }, "end": { "line": 77, "column": 1 } } ] }, "24": { "type": "branch", "line": 68, "loc": { "start": { "line": 68, "column": 4 }, "end": { "line": 70, "column": 8 } }, "locations": [ { "start": { "line": 68, "column": 4 }, "end": { "line": 70, "column": 8 } } ] }, "25": { "type": "branch", "line": 70, "loc": { "start": { "line": 70, "column": 21 }, "end": { "line": 76, "column": 11 } }, "locations": [ { "start": { "line": 70, "column": 21 }, "end": { "line": 76, "column": 11 } } ] }, "26": { "type": "branch", "line": 76, "loc": { "start": { "line": 76, "column": 4 }, "end": { "line": 77, "column": 1 } }, "locations": [ { "start": { "line": 76, "column": 4 }, "end": { "line": 77, "column": 1 } } ] }, "27": { "type": "branch", "line": 87, "loc": { "start": { "line": 87, "column": 0 }, "end": { "line": 92, "column": 1 } }, "locations": [ { "start": { "line": 87, "column": 0 }, "end": { "line": 92, "column": 1 } } ] }, "28": { "type": "branch", "line": 89, "loc": { "start": { "line": 89, "column": 15 }, "end": { "line": 91, "column": 11 } }, "locations": [ { "start": { "line": 89, "column": 15 }, "end": { "line": 91, "column": 11 } } ] }, "29": { "type": "branch", "line": 91, "loc": { "start": { "line": 91, "column": 4 }, "end": { "line": 92, "column": 1 } }, "locations": [ { "start": { "line": 91, "column": 4 }, "end": { "line": 92, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 3 ], "3": [ 1 ], "4": [ 0 ], "5": [ 1 ], "6": [ 0 ], "7": [ 17 ], "8": [ 6 ], "9": [ 2 ], "10": [ 4 ], "11": [ 3 ], "12": [ 2 ], "13": [ 0 ], "14": [ 2 ], "15": [ 1 ], "16": [ 0 ], "17": [ 2 ], "18": [ 1 ], "19": [ 0 ], "20": [ 6 ], "21": [ 3 ], "22": [ 0 ], "23": [ 5 ], "24": [ 2 ], "25": [ 1 ], "26": [ 0 ], "27": [ 30 ], "28": [ 15 ], "29": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 92, "column": 1 }, "end": { "line": 92, "column": 1 } }, "loc": { "start": { "line": 92, "column": 1 }, "end": { "line": 92, "column": 1 } }, "line": 92 }, "1": { "name": "create", "decl": { "start": { "line": 14, "column": 0 }, "end": { "line": 22, "column": 1 } }, "loc": { "start": { "line": 14, "column": 0 }, "end": { "line": 22, "column": 1 } }, "line": 14 }, "2": { "name": "updateCompany", "decl": { "start": { "line": 24, "column": 0 }, "end": { "line": 48, "column": 1 } }, "loc": { "start": { "line": 24, "column": 0 }, "end": { "line": 48, "column": 1 } }, "line": 24 }, "3": { "name": "getAllCompanies", "decl": { "start": { "line": 50, "column": 0 }, "end": { "line": 53, "column": 1 } }, "loc": { "start": { "line": 50, "column": 0 }, "end": { "line": 53, "column": 1 } }, "line": 50 }, "4": { "name": "getMyCompanies", "decl": { "start": { "line": 55, "column": 0 }, "end": { "line": 60, "column": 1 } }, "loc": { "start": { "line": 55, "column": 0 }, "end": { "line": 60, "column": 1 } }, "line": 55 }, "5": { "name": "getCompanyById", "decl": { "start": { "line": 62, "column": 0 }, "end": { "line": 65, "column": 1 } }, "loc": { "start": { "line": 62, "column": 0 }, "end": { "line": 65, "column": 1 } }, "line": 62 }, "6": { "name": "_delete", "decl": { "start": { "line": 67, "column": 0 }, "end": { "line": 77, "column": 1 } }, "loc": { "start": { "line": 67, "column": 0 }, "end": { "line": 77, "column": 1 } }, "line": 67 }, "7": { "name": "getCompany", "decl": { "start": { "line": 87, "column": 0 }, "end": { "line": 92, "column": 1 } }, "loc": { "start": { "line": 87, "column": 0 }, "end": { "line": 92, "column": 1 } }, "line": 87 } }, "f": { "0": 1, "1": 3, "2": 17, "3": 2, "4": 2, "5": 6, "6": 5, "7": 30 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/company.validators.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 27 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 70 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 44 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 38 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 45 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 31 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 34 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 47 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 7 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 39 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 2 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 44 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 25 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 37 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 44 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 46 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 38 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 41 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 44 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 6 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 0 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 43 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 0 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 39 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 2, "5": 2, "6": 2, "7": 2, "8": 2, "9": 2, "10": 2, "11": 2, "12": 2, "13": 1, "14": 1, "15": 6, "16": 6, "17": 6, "18": 6, "19": 6, "20": 6, "21": 6, "22": 6, "23": 6, "24": 6, "25": 6, "26": 6, "27": 6 }, "branchMap": { "0": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 2 } }, "locations": [ { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 2 } } ] }, "1": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 2 } }, "locations": [ { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 2 } } ] }, "2": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 13, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 23 }, "end": { "line": 13, "column": 2 } } ] }, "3": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 23 }, "end": { "line": 28, "column": 2 } }, "locations": [ { "start": { "line": 15, "column": 23 }, "end": { "line": 28, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 6 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 2 } }, "loc": { "start": { "line": 28, "column": 2 }, "end": { "line": 28, "column": 2 } }, "line": 28 }, "1": { "name": "Object.<anonymous>.exports.createSchema", "decl": { "start": { "line": 4, "column": 23 }, "end": { "line": 13, "column": 2 } }, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 13, "column": 2 } }, "line": 4 }, "2": { "name": "Object.<anonymous>.exports.updateSchema", "decl": { "start": { "line": 15, "column": 23 }, "end": { "line": 28, "column": 2 } }, "loc": { "start": { "line": 15, "column": 23 }, "end": { "line": 28, "column": 2 } }, "line": 15 } }, "f": { "0": 1, "1": 2, "2": 6 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 37 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 49 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 63 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 0 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 30 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 28 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 35 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 5 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 29 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 22 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 5 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 35 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 69 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 46 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 50 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 16 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 19 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 53 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 33 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 23 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 59 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 48 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 18 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 14 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 20 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 48 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 33 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 23 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 54 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 57 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 18 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 14 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 10 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 5 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 1 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 0 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 15 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 0 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 26 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 41, "8": 41, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1 }, "branchMap": { "0": { "type": "branch", "line": 43, "loc": { "start": { "line": 43, "column": 26 }, "end": { "line": 43, "column": 26 } }, "locations": [ { "start": { "line": 43, "column": 26 }, "end": { "line": 43, "column": 26 } } ] }, "1": { "type": "branch", "line": 43, "loc": { "start": { "line": 43, "column": 26 }, "end": { "line": 43, "column": 26 } }, "locations": [ { "start": { "line": 43, "column": 26 }, "end": { "line": 43, "column": 26 } } ] }, "2": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "locations": [ { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } } ] }, "3": { "type": "branch", "line": 7, "loc": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "locations": [ { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } } ] }, "4": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "locations": [ { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } } ] }, "5": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } }, "locations": [ { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 3 ], "3": [ 41 ], "4": [ 1 ], "5": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 43, "column": 26 }, "end": { "line": 43, "column": 26 } }, "loc": { "start": { "line": 43, "column": 26 }, "end": { "line": 43, "column": 26 } }, "line": 43 }, "1": { "name": "Category", "decl": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "line": 6 }, "2": { "name": "get tableName", "decl": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "loc": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "line": 7 }, "3": { "name": "get jsonSchema", "decl": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "loc": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "line": 11 }, "4": { "name": "get relationMappings", "decl": { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } }, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } }, "line": 15 } }, "f": { "0": 1, "1": 3, "2": 41, "3": 1, "4": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 72 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 73 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 47 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 43 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 0 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 54 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 49 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 31 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 22 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 3 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 70 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 39 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 0 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 47 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 70 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 40 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 36 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 74 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 70 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 0 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 24 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 0 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 33 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 19 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 33 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 47 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 21 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 1 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 0 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 49 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 49 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 0 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 19 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 44 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 29 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 67 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 9 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 21 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 1 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 0 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 42 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 39 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 19 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 28 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 27 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 63 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 9 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 21 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 1 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 0 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 33 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 51 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 29 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 39 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 51 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 0 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 19 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 36 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 27 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 63 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 9 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 21 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 1 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 0 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 42 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 58 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 21 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 36 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 46 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 6 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 0 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 19 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 25 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 21 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 41 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 10 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 21 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 2, "34": 2, "35": 2, "36": 2, "37": 2, "38": 2, "39": 2, "40": 2, "41": 2, "42": 2, "43": 1, "44": 2, "45": 2, "46": 2, "47": 2, "48": 2, "49": 2, "50": 2, "51": 2, "52": 2, "53": 1, "54": 1, "55": 1, "56": 1, "57": 1, "58": 1, "59": 1, "60": 1, "61": 1, "62": 1, "63": 1, "64": 1, "65": 1, "66": 1, "67": 1, "68": 1, "69": 1, "70": 1, "71": 1, "72": 1, "73": 1, "74": 1, "75": 1, "76": 1, "77": 1, "78": 1, "79": 1, "80": 1, "81": 1 }, "branchMap": { "0": { "type": "branch", "line": 82, "loc": { "start": { "line": 82, "column": 1 }, "end": { "line": 82, "column": 1 } }, "locations": [ { "start": { "line": 82, "column": 1 }, "end": { "line": 82, "column": 1 } } ] }, "1": { "type": "branch", "line": 82, "loc": { "start": { "line": 82, "column": 1 }, "end": { "line": 82, "column": 1 } }, "locations": [ { "start": { "line": 82, "column": 1 }, "end": { "line": 82, "column": 1 } } ] }, "2": { "type": "branch", "line": 27, "loc": { "start": { "line": 27, "column": 0 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 27, "column": 0 }, "end": { "line": 32, "column": 1 } } ] }, "3": { "type": "branch", "line": 34, "loc": { "start": { "line": 34, "column": 0 }, "end": { "line": 43, "column": 1 } }, "locations": [ { "start": { "line": 34, "column": 0 }, "end": { "line": 43, "column": 1 } } ] }, "4": { "type": "branch", "line": 39, "loc": { "start": { "line": 39, "column": 15 }, "end": { "line": 40, "column": 51 } }, "locations": [ { "start": { "line": 39, "column": 15 }, "end": { "line": 40, "column": 51 } } ] }, "5": { "type": "branch", "line": 40, "loc": { "start": { "line": 40, "column": 22 }, "end": { "line": 40, "column": 28 } }, "locations": [ { "start": { "line": 40, "column": 22 }, "end": { "line": 40, "column": 28 } } ] }, "6": { "type": "branch", "line": 45, "loc": { "start": { "line": 45, "column": 0 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 45, "column": 0 }, "end": { "line": 53, "column": 1 } } ] }, "7": { "type": "branch", "line": 49, "loc": { "start": { "line": 49, "column": 15 }, "end": { "line": 50, "column": 47 } }, "locations": [ { "start": { "line": 49, "column": 15 }, "end": { "line": 50, "column": 47 } } ] }, "8": { "type": "branch", "line": 50, "loc": { "start": { "line": 50, "column": 20 }, "end": { "line": 50, "column": 26 } }, "locations": [ { "start": { "line": 50, "column": 20 }, "end": { "line": 50, "column": 26 } } ] }, "9": { "type": "branch", "line": 55, "loc": { "start": { "line": 55, "column": 0 }, "end": { "line": 67, "column": 1 } }, "locations": [ { "start": { "line": 55, "column": 0 }, "end": { "line": 67, "column": 1 } } ] }, "10": { "type": "branch", "line": 63, "loc": { "start": { "line": 63, "column": 15 }, "end": { "line": 64, "column": 47 } }, "locations": [ { "start": { "line": 63, "column": 15 }, "end": { "line": 64, "column": 47 } } ] }, "11": { "type": "branch", "line": 64, "loc": { "start": { "line": 64, "column": 20 }, "end": { "line": 64, "column": 26 } }, "locations": [ { "start": { "line": 64, "column": 20 }, "end": { "line": 64, "column": 26 } } ] }, "12": { "type": "branch", "line": 69, "loc": { "start": { "line": 69, "column": 0 }, "end": { "line": 82, "column": 1 } }, "locations": [ { "start": { "line": 69, "column": 0 }, "end": { "line": 82, "column": 1 } } ] }, "13": { "type": "branch", "line": 78, "loc": { "start": { "line": 78, "column": 14 }, "end": { "line": 80, "column": 10 } }, "locations": [ { "start": { "line": 78, "column": 14 }, "end": { "line": 80, "column": 10 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 2 ], "4": [ 2 ], "5": [ 0 ], "6": [ 2 ], "7": [ 2 ], "8": [ 0 ], "9": [ 1 ], "10": [ 1 ], "11": [ 0 ], "12": [ 1 ], "13": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 82, "column": 1 }, "end": { "line": 82, "column": 1 } }, "loc": { "start": { "line": 82, "column": 1 }, "end": { "line": 82, "column": 1 } }, "line": 82 }, "1": { "name": "create", "decl": { "start": { "line": 27, "column": 0 }, "end": { "line": 32, "column": 1 } }, "loc": { "start": { "line": 27, "column": 0 }, "end": { "line": 32, "column": 1 } }, "line": 27 }, "2": { "name": "getAllCompanyCategorys", "decl": { "start": { "line": 34, "column": 0 }, "end": { "line": 43, "column": 1 } }, "loc": { "start": { "line": 34, "column": 0 }, "end": { "line": 43, "column": 1 } }, "line": 34 }, "3": { "name": "getCategoryById", "decl": { "start": { "line": 45, "column": 0 }, "end": { "line": 53, "column": 1 } }, "loc": { "start": { "line": 45, "column": 0 }, "end": { "line": 53, "column": 1 } }, "line": 45 }, "4": { "name": "update", "decl": { "start": { "line": 55, "column": 0 }, "end": { "line": 67, "column": 1 } }, "loc": { "start": { "line": 55, "column": 0 }, "end": { "line": 67, "column": 1 } }, "line": 55 }, "5": { "name": "_deleteCategory", "decl": { "start": { "line": 69, "column": 0 }, "end": { "line": 82, "column": 1 } }, "loc": { "start": { "line": 69, "column": 0 }, "end": { "line": 82, "column": 1 } }, "line": 69 } }, "f": { "0": 1, "1": 1, "2": 2, "3": 2, "4": 1, "5": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.service.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 45 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 49 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 18 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 19 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 19 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 19 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 27 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 20 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 12 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 2 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 39 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 59 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 20 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 1 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 0 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 43 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 47 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 42 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 8 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 22 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 40 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 28 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 30 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 36 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 11 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 7 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 56 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 5 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 74 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 18 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 7 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 0 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 27 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 1 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 0 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 33 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 45 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 21 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 1 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 0 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 47 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 59 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 0 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 31 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 20 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 5 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 21 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 1 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 0 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 36 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 47 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 20 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 1 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 0 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 32 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 26 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 17 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 30 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 1 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 0 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 33 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 0 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 35 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 43 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 28 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 34 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 17 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 0 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 20 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 2, "13": 2, "14": 0, "15": 0, "16": 1, "17": 3, "18": 3, "19": 1, "20": 1, "21": 3, "22": 0, "23": 0, "24": 3, "25": 3, "26": 3, "27": 3, "28": 0, "29": 0, "30": 1, "31": 1, "32": 1, "33": 1, "34": 3, "35": 0, "36": 1, "37": 0, "38": 0, "39": 0, "40": 0, "41": 1, "42": 4, "43": 4, "44": 2, "45": 2, "46": 2, "47": 2, "48": 0, "49": 0, "50": 1, "51": 4, "52": 4, "53": 4, "54": 0, "55": 1, "56": 2, "57": 2, "58": 2, "59": 2, "60": 1, "61": 1, "62": 1, "63": 1, "64": 6, "65": 6, "66": 6, "67": 3, "68": 3, "69": 3, "70": 6, "71": 0 }, "branchMap": { "0": { "type": "branch", "line": 72, "loc": { "start": { "line": 72, "column": 1 }, "end": { "line": 72, "column": 1 } }, "locations": [ { "start": { "line": 72, "column": 1 }, "end": { "line": 72, "column": 1 } } ] }, "1": { "type": "branch", "line": 72, "loc": { "start": { "line": 72, "column": 1 }, "end": { "line": 72, "column": 1 } }, "locations": [ { "start": { "line": 72, "column": 1 }, "end": { "line": 72, "column": 1 } } ] }, "2": { "type": "branch", "line": 13, "loc": { "start": { "line": 13, "column": 0 }, "end": { "line": 16, "column": 1 } }, "locations": [ { "start": { "line": 13, "column": 0 }, "end": { "line": 16, "column": 1 } } ] }, "3": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 4 }, "end": { "line": 16, "column": 1 } }, "locations": [ { "start": { "line": 14, "column": 4 }, "end": { "line": 16, "column": 1 } } ] }, "4": { "type": "branch", "line": 18, "loc": { "start": { "line": 18, "column": 0 }, "end": { "line": 36, "column": 1 } }, "locations": [ { "start": { "line": 18, "column": 0 }, "end": { "line": 36, "column": 1 } } ] }, "5": { "type": "branch", "line": 19, "loc": { "start": { "line": 19, "column": 39 }, "end": { "line": 22, "column": 14 } }, "locations": [ { "start": { "line": 19, "column": 39 }, "end": { "line": 22, "column": 14 } } ] }, "6": { "type": "branch", "line": 22, "loc": { "start": { "line": 22, "column": 8 }, "end": { "line": 23, "column": 40 } }, "locations": [ { "start": { "line": 22, "column": 8 }, "end": { "line": 23, "column": 40 } } ] }, "7": { "type": "branch", "line": 22, "loc": { "start": { "line": 22, "column": 8 }, "end": { "line": 24, "column": 28 } }, "locations": [ { "start": { "line": 22, "column": 8 }, "end": { "line": 24, "column": 28 } } ] }, "8": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 6 }, "end": { "line": 30, "column": 5 } }, "locations": [ { "start": { "line": 28, "column": 6 }, "end": { "line": 30, "column": 5 } } ] }, "9": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 5 }, "end": { "line": 35, "column": 11 } }, "locations": [ { "start": { "line": 30, "column": 5 }, "end": { "line": 35, "column": 11 } } ] }, "10": { "type": "branch", "line": 35, "loc": { "start": { "line": 35, "column": 4 }, "end": { "line": 36, "column": 1 } }, "locations": [ { "start": { "line": 35, "column": 4 }, "end": { "line": 36, "column": 1 } } ] }, "11": { "type": "branch", "line": 43, "loc": { "start": { "line": 43, "column": 0 }, "end": { "line": 50, "column": 1 } }, "locations": [ { "start": { "line": 43, "column": 0 }, "end": { "line": 50, "column": 1 } } ] }, "12": { "type": "branch", "line": 44, "loc": { "start": { "line": 44, "column": 4 }, "end": { "line": 48, "column": 5 } }, "locations": [ { "start": { "line": 44, "column": 4 }, "end": { "line": 48, "column": 5 } } ] }, "13": { "type": "branch", "line": 48, "loc": { "start": { "line": 48, "column": 5 }, "end": { "line": 50, "column": 1 } }, "locations": [ { "start": { "line": 48, "column": 5 }, "end": { "line": 50, "column": 1 } } ] }, "14": { "type": "branch", "line": 52, "loc": { "start": { "line": 52, "column": 0 }, "end": { "line": 55, "column": 1 } }, "locations": [ { "start": { "line": 52, "column": 0 }, "end": { "line": 55, "column": 1 } } ] }, "15": { "type": "branch", "line": 53, "loc": { "start": { "line": 53, "column": 4 }, "end": { "line": 54, "column": 11 } }, "locations": [ { "start": { "line": 53, "column": 4 }, "end": { "line": 54, "column": 11 } } ] }, "16": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 4 }, "end": { "line": 55, "column": 1 } }, "locations": [ { "start": { "line": 54, "column": 4 }, "end": { "line": 55, "column": 1 } } ] }, "17": { "type": "branch", "line": 57, "loc": { "start": { "line": 57, "column": 0 }, "end": { "line": 61, "column": 1 } }, "locations": [ { "start": { "line": 57, "column": 0 }, "end": { "line": 61, "column": 1 } } ] }, "18": { "type": "branch", "line": 60, "loc": { "start": { "line": 60, "column": 15 }, "end": { "line": 61, "column": 1 } }, "locations": [ { "start": { "line": 60, "column": 15 }, "end": { "line": 61, "column": 1 } } ] }, "19": { "type": "branch", "line": 65, "loc": { "start": { "line": 65, "column": 0 }, "end": { "line": 72, "column": 1 } }, "locations": [ { "start": { "line": 65, "column": 0 }, "end": { "line": 72, "column": 1 } } ] }, "20": { "type": "branch", "line": 67, "loc": { "start": { "line": 67, "column": 15 }, "end": { "line": 71, "column": 11 } }, "locations": [ { "start": { "line": 67, "column": 15 }, "end": { "line": 71, "column": 11 } } ] }, "21": { "type": "branch", "line": 71, "loc": { "start": { "line": 71, "column": 4 }, "end": { "line": 72, "column": 1 } }, "locations": [ { "start": { "line": 71, "column": 4 }, "end": { "line": 72, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 0 ], "4": [ 3 ], "5": [ 1 ], "6": [ 0 ], "7": [ 0 ], "8": [ 0 ], "9": [ 1 ], "10": [ 0 ], "11": [ 4 ], "12": [ 2 ], "13": [ 0 ], "14": [ 4 ], "15": [ 2 ], "16": [ 0 ], "17": [ 2 ], "18": [ 1 ], "19": [ 6 ], "20": [ 3 ], "21": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 72, "column": 1 }, "end": { "line": 72, "column": 1 } }, "loc": { "start": { "line": 72, "column": 1 }, "end": { "line": 72, "column": 1 } }, "line": 72 }, "1": { "name": "createCategory", "decl": { "start": { "line": 13, "column": 0 }, "end": { "line": 16, "column": 1 } }, "loc": { "start": { "line": 13, "column": 0 }, "end": { "line": 16, "column": 1 } }, "line": 13 }, "2": { "name": "updateCategory", "decl": { "start": { "line": 18, "column": 0 }, "end": { "line": 36, "column": 1 } }, "loc": { "start": { "line": 18, "column": 0 }, "end": { "line": 36, "column": 1 } }, "line": 18 }, "3": { "name": "getAllCategory", "decl": { "start": { "line": 38, "column": 0 }, "end": { "line": 41, "column": 1 } }, "loc": { "start": { "line": 38, "column": 0 }, "end": { "line": 41, "column": 1 } }, "line": 38 }, "4": { "name": "getAllCompanyCategorys", "decl": { "start": { "line": 43, "column": 0 }, "end": { "line": 50, "column": 1 } }, "loc": { "start": { "line": 43, "column": 0 }, "end": { "line": 50, "column": 1 } }, "line": 43 }, "5": { "name": "getCategoryById", "decl": { "start": { "line": 52, "column": 0 }, "end": { "line": 55, "column": 1 } }, "loc": { "start": { "line": 52, "column": 0 }, "end": { "line": 55, "column": 1 } }, "line": 52 }, "6": { "name": "_delete", "decl": { "start": { "line": 57, "column": 0 }, "end": { "line": 61, "column": 1 } }, "loc": { "start": { "line": 57, "column": 0 }, "end": { "line": 61, "column": 1 } }, "line": 57 }, "7": { "name": "getCategory", "decl": { "start": { "line": 65, "column": 0 }, "end": { "line": 72, "column": 1 } }, "loc": { "start": { "line": 65, "column": 0 }, "end": { "line": 72, "column": 1 } }, "line": 65 } }, "f": { "0": 1, "1": 2, "2": 3, "3": 0, "4": 4, "5": 4, "6": 2, "7": 6 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/category.validators.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 27 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 76 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 44 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 38 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 41 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 7 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 39 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 2 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 44 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 25 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 37 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 40 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 6 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 0 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 43 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 39 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1 }, "branchMap": { "0": { "type": "branch", "line": 21, "loc": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "locations": [ { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } } ] }, "1": { "type": "branch", "line": 21, "loc": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "locations": [ { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } } ] }, "2": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 10, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 23 }, "end": { "line": 10, "column": 2 } } ] }, "3": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 23 }, "end": { "line": 21, "column": 2 } }, "locations": [ { "start": { "line": 12, "column": 23 }, "end": { "line": 21, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "loc": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "line": 21 }, "1": { "name": "Object.<anonymous>.exports.createSchema", "decl": { "start": { "line": 4, "column": 23 }, "end": { "line": 10, "column": 2 } }, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 10, "column": 2 } }, "line": 4 }, "2": { "name": "Object.<anonymous>.exports.updateSchema", "decl": { "start": { "line": 12, "column": 23 }, "end": { "line": 21, "column": 2 } }, "loc": { "start": { "line": 12, "column": 23 }, "end": { "line": 21, "column": 2 } }, "line": 12 } }, "f": { "0": 1, "1": 1, "2": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 66 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 40 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 26 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 28 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 31 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 5 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 35 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 66 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 16 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 23 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 53 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 37 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 23 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 59 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 52 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 18 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 14 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 10 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 5 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 1 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 0 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 15 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 22 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 17, "7": 17, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1 }, "branchMap": { "0": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 22 }, "end": { "line": 28, "column": 22 } }, "locations": [ { "start": { "line": 28, "column": 22 }, "end": { "line": 28, "column": 22 } } ] }, "1": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 22 }, "end": { "line": 28, "column": 22 } }, "locations": [ { "start": { "line": 28, "column": 22 }, "end": { "line": 28, "column": 22 } } ] }, "2": { "type": "branch", "line": 5, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "locations": [ { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } } ] }, "3": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "locations": [ { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } } ] }, "4": { "type": "branch", "line": 10, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 23, "column": 5 } }, "locations": [ { "start": { "line": 10, "column": 4 }, "end": { "line": 23, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 17 ], "4": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 28, "column": 22 }, "end": { "line": 28, "column": 22 } }, "loc": { "start": { "line": 28, "column": 22 }, "end": { "line": 28, "column": 22 } }, "line": 28 }, "1": { "name": "Item", "decl": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "line": 5 }, "2": { "name": "get tableName", "decl": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "line": 6 }, "3": { "name": "get relationMappings", "decl": { "start": { "line": 10, "column": 4 }, "end": { "line": 23, "column": 5 } }, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 23, "column": 5 } }, "line": 10 } }, "f": { "0": 1, "1": 2, "2": 17, "3": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 68 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 76 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 50 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 46 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 0 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 31 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 22 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 3 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 70 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 28 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 78 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 65 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 0 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 24 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 0 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 33 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 60 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 15 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 29 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 51 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 21 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 1 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 0 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 34 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 39 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 15 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 24 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 70 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 21 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 1 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 0 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 37 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 39 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 15 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 33 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 70 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 21 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 1 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 0 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 37 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 39 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 15 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 27 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 19 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 22 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 53 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 19 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 14 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 9 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 21 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 2, "26": 2, "27": 2, "28": 2, "29": 2, "30": 2, "31": 2, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1, "43": 1, "44": 1, "45": 1, "46": 1, "47": 1, "48": 1, "49": 1, "50": 1, "51": 1, "52": 1 }, "branchMap": { "0": { "type": "branch", "line": 53, "loc": { "start": { "line": 53, "column": 1 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 53, "column": 1 }, "end": { "line": 53, "column": 1 } } ] }, "1": { "type": "branch", "line": 53, "loc": { "start": { "line": 53, "column": 1 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 53, "column": 1 }, "end": { "line": 53, "column": 1 } } ] }, "2": { "type": "branch", "line": 18, "loc": { "start": { "line": 18, "column": 0 }, "end": { "line": 24, "column": 1 } }, "locations": [ { "start": { "line": 18, "column": 0 }, "end": { "line": 24, "column": 1 } } ] }, "3": { "type": "branch", "line": 26, "loc": { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } } ] }, "4": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 15 }, "end": { "line": 30, "column": 52 } }, "locations": [ { "start": { "line": 30, "column": 15 }, "end": { "line": 30, "column": 52 } } ] }, "5": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 29 }, "end": { "line": 30, "column": 35 } }, "locations": [ { "start": { "line": 30, "column": 29 }, "end": { "line": 30, "column": 35 } } ] }, "6": { "type": "branch", "line": 34, "loc": { "start": { "line": 34, "column": 0 }, "end": { "line": 40, "column": 1 } }, "locations": [ { "start": { "line": 34, "column": 0 }, "end": { "line": 40, "column": 1 } } ] }, "7": { "type": "branch", "line": 38, "loc": { "start": { "line": 38, "column": 15 }, "end": { "line": 38, "column": 52 } }, "locations": [ { "start": { "line": 38, "column": 15 }, "end": { "line": 38, "column": 52 } } ] }, "8": { "type": "branch", "line": 38, "loc": { "start": { "line": 38, "column": 29 }, "end": { "line": 38, "column": 35 } }, "locations": [ { "start": { "line": 38, "column": 29 }, "end": { "line": 38, "column": 35 } } ] }, "9": { "type": "branch", "line": 42, "loc": { "start": { "line": 42, "column": 0 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 42, "column": 0 }, "end": { "line": 53, "column": 1 } } ] }, "10": { "type": "branch", "line": 46, "loc": { "start": { "line": 46, "column": 14 }, "end": { "line": 47, "column": 15 } }, "locations": [ { "start": { "line": 46, "column": 14 }, "end": { "line": 47, "column": 15 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 2 ], "4": [ 2 ], "5": [ 0 ], "6": [ 1 ], "7": [ 1 ], "8": [ 0 ], "9": [ 1 ], "10": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 53, "column": 1 }, "end": { "line": 53, "column": 1 } }, "loc": { "start": { "line": 53, "column": 1 }, "end": { "line": 53, "column": 1 } }, "line": 53 }, "1": { "name": "create", "decl": { "start": { "line": 18, "column": 0 }, "end": { "line": 24, "column": 1 } }, "loc": { "start": { "line": 18, "column": 0 }, "end": { "line": 24, "column": 1 } }, "line": 18 }, "2": { "name": "getById", "decl": { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } }, "loc": { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } }, "line": 26 }, "3": { "name": "updateItem", "decl": { "start": { "line": 34, "column": 0 }, "end": { "line": 40, "column": 1 } }, "loc": { "start": { "line": 34, "column": 0 }, "end": { "line": 40, "column": 1 } }, "line": 34 }, "4": { "name": "deleteItem", "decl": { "start": { "line": 42, "column": 0 }, "end": { "line": 53, "column": 1 } }, "loc": { "start": { "line": 42, "column": 0 }, "end": { "line": 53, "column": 1 } }, "line": 42 } }, "f": { "0": 1, "1": 1, "2": 2, "3": 1, "4": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.service.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 37 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 52 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 18 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 15 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 16 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 15 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 15 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 2 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 35 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 51 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 16 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 1 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 0 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 32 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 39 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 16 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 20 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 5 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 16 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 1 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 0 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 39 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 72 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 0 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 22 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 1 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 0 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 40 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 22 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 17 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 35 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 1 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 0 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 59 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 32 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 35 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 29 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 17 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 16 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 1 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 0 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 29 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 43 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 37 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 2, "11": 2, "12": 0, "13": 0, "14": 1, "15": 4, "16": 4, "17": 2, "18": 2, "19": 2, "20": 0, "21": 0, "22": 1, "23": 2, "24": 2, "25": 1, "26": 2, "27": 0, "28": 1, "29": 2, "30": 2, "31": 2, "32": 2, "33": 1, "34": 1, "35": 1, "36": 4, "37": 4, "38": 4, "39": 2, "40": 4, "41": 0, "42": 1, "43": 0, "44": 0, "45": 0, "46": 0 }, "branchMap": { "0": { "type": "branch", "line": 47, "loc": { "start": { "line": 47, "column": 1 }, "end": { "line": 47, "column": 1 } }, "locations": [ { "start": { "line": 47, "column": 1 }, "end": { "line": 47, "column": 1 } } ] }, "1": { "type": "branch", "line": 47, "loc": { "start": { "line": 47, "column": 1 }, "end": { "line": 47, "column": 1 } }, "locations": [ { "start": { "line": 47, "column": 1 }, "end": { "line": 47, "column": 1 } } ] }, "2": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 0 }, "end": { "line": 14, "column": 1 } }, "locations": [ { "start": { "line": 11, "column": 0 }, "end": { "line": 14, "column": 1 } } ] }, "3": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 4 }, "end": { "line": 14, "column": 1 } }, "locations": [ { "start": { "line": 12, "column": 4 }, "end": { "line": 14, "column": 1 } } ] }, "4": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 0 }, "end": { "line": 22, "column": 1 } }, "locations": [ { "start": { "line": 16, "column": 0 }, "end": { "line": 22, "column": 1 } } ] }, "5": { "type": "branch", "line": 17, "loc": { "start": { "line": 17, "column": 4 }, "end": { "line": 20, "column": 5 } }, "locations": [ { "start": { "line": 17, "column": 4 }, "end": { "line": 20, "column": 5 } } ] }, "6": { "type": "branch", "line": 20, "loc": { "start": { "line": 20, "column": 5 }, "end": { "line": 22, "column": 1 } }, "locations": [ { "start": { "line": 20, "column": 5 }, "end": { "line": 22, "column": 1 } } ] }, "7": { "type": "branch", "line": 24, "loc": { "start": { "line": 24, "column": 0 }, "end": { "line": 28, "column": 1 } }, "locations": [ { "start": { "line": 24, "column": 0 }, "end": { "line": 28, "column": 1 } } ] }, "8": { "type": "branch", "line": 25, "loc": { "start": { "line": 25, "column": 4 }, "end": { "line": 27, "column": 11 } }, "locations": [ { "start": { "line": 25, "column": 4 }, "end": { "line": 27, "column": 11 } } ] }, "9": { "type": "branch", "line": 27, "loc": { "start": { "line": 27, "column": 4 }, "end": { "line": 28, "column": 1 } }, "locations": [ { "start": { "line": 27, "column": 4 }, "end": { "line": 28, "column": 1 } } ] }, "10": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 0 }, "end": { "line": 34, "column": 1 } }, "locations": [ { "start": { "line": 30, "column": 0 }, "end": { "line": 34, "column": 1 } } ] }, "11": { "type": "branch", "line": 33, "loc": { "start": { "line": 33, "column": 15 }, "end": { "line": 34, "column": 1 } }, "locations": [ { "start": { "line": 33, "column": 15 }, "end": { "line": 34, "column": 1 } } ] }, "12": { "type": "branch", "line": 37, "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 42, "column": 1 } }, "locations": [ { "start": { "line": 37, "column": 0 }, "end": { "line": 42, "column": 1 } } ] }, "13": { "type": "branch", "line": 39, "loc": { "start": { "line": 39, "column": 15 }, "end": { "line": 41, "column": 11 } }, "locations": [ { "start": { "line": 39, "column": 15 }, "end": { "line": 41, "column": 11 } } ] }, "14": { "type": "branch", "line": 41, "loc": { "start": { "line": 41, "column": 4 }, "end": { "line": 42, "column": 1 } }, "locations": [ { "start": { "line": 41, "column": 4 }, "end": { "line": 42, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 0 ], "4": [ 4 ], "5": [ 2 ], "6": [ 0 ], "7": [ 2 ], "8": [ 1 ], "9": [ 0 ], "10": [ 2 ], "11": [ 1 ], "12": [ 4 ], "13": [ 2 ], "14": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 47, "column": 1 }, "end": { "line": 47, "column": 1 } }, "loc": { "start": { "line": 47, "column": 1 }, "end": { "line": 47, "column": 1 } }, "line": 47 }, "1": { "name": "createItem", "decl": { "start": { "line": 11, "column": 0 }, "end": { "line": 14, "column": 1 } }, "loc": { "start": { "line": 11, "column": 0 }, "end": { "line": 14, "column": 1 } }, "line": 11 }, "2": { "name": "getItemById", "decl": { "start": { "line": 16, "column": 0 }, "end": { "line": 22, "column": 1 } }, "loc": { "start": { "line": 16, "column": 0 }, "end": { "line": 22, "column": 1 } }, "line": 16 }, "3": { "name": "updateItem", "decl": { "start": { "line": 24, "column": 0 }, "end": { "line": 28, "column": 1 } }, "loc": { "start": { "line": 24, "column": 0 }, "end": { "line": 28, "column": 1 } }, "line": 24 }, "4": { "name": "deleteItem", "decl": { "start": { "line": 30, "column": 0 }, "end": { "line": 34, "column": 1 } }, "loc": { "start": { "line": 30, "column": 0 }, "end": { "line": 34, "column": 1 } }, "line": 30 }, "5": { "name": "getItem", "decl": { "start": { "line": 37, "column": 0 }, "end": { "line": 42, "column": 1 } }, "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 42, "column": 1 } }, "line": 37 }, "6": { "name": "basicDetails", "decl": { "start": { "line": 44, "column": 0 }, "end": { "line": 47, "column": 1 } }, "loc": { "start": { "line": 44, "column": 0 }, "end": { "line": 47, "column": 1 } }, "line": 44 } }, "f": { "0": 1, "1": 2, "2": 4, "3": 2, "4": 2, "5": 4, "6": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/category/item/item.validators.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 27 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 79 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 44 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 38 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 39 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 42 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 45 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 32 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 45 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 7 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 39 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 2 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 0 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 44 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 25 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 37 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 38 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 41 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 44 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 32 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 44 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 6 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 0 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 43 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 39 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1 }, "branchMap": { "0": { "type": "branch", "line": 29, "loc": { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 2 } }, "locations": [ { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 2 } } ] }, "1": { "type": "branch", "line": 29, "loc": { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 2 } }, "locations": [ { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 2 } } ] }, "2": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 14, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 23 }, "end": { "line": 14, "column": 2 } } ] }, "3": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 23 }, "end": { "line": 29, "column": 2 } }, "locations": [ { "start": { "line": 16, "column": 23 }, "end": { "line": 29, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 2 } }, "loc": { "start": { "line": 29, "column": 2 }, "end": { "line": 29, "column": 2 } }, "line": 29 }, "1": { "name": "Object.<anonymous>.exports.createSchema", "decl": { "start": { "line": 4, "column": 23 }, "end": { "line": 14, "column": 2 } }, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 14, "column": 2 } }, "line": 4 }, "2": { "name": "Object.<anonymous>.exports.updateSchema", "decl": { "start": { "line": 16, "column": 23 }, "end": { "line": 29, "column": 2 } }, "loc": { "start": { "line": 16, "column": 23 }, "end": { "line": 29, "column": 2 } }, "line": 16 } }, "f": { "0": 1, "1": 1, "2": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 34 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 45 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 60 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 0 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 26 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 28 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 31 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 5 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 29 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 22 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 5 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 35 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 69 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 52 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 62 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 16 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 22 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 53 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 36 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 23 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 58 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 51 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 18 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 14 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 25 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 48 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 37 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 23 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 50 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 57 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 18 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 14 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 10 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 5 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 1 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 0 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 15 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 0 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 22 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 41, "8": 41, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1 }, "branchMap": { "0": { "type": "branch", "line": 43, "loc": { "start": { "line": 43, "column": 22 }, "end": { "line": 43, "column": 22 } }, "locations": [ { "start": { "line": 43, "column": 22 }, "end": { "line": 43, "column": 22 } } ] }, "1": { "type": "branch", "line": 43, "loc": { "start": { "line": 43, "column": 22 }, "end": { "line": 43, "column": 22 } }, "locations": [ { "start": { "line": 43, "column": 22 }, "end": { "line": 43, "column": 22 } } ] }, "2": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "locations": [ { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } } ] }, "3": { "type": "branch", "line": 7, "loc": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "locations": [ { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } } ] }, "4": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "locations": [ { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } } ] }, "5": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } }, "locations": [ { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 4 ], "3": [ 41 ], "4": [ 1 ], "5": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 43, "column": 22 }, "end": { "line": 43, "column": 22 } }, "loc": { "start": { "line": 43, "column": 22 }, "end": { "line": 43, "column": 22 } }, "line": 43 }, "1": { "name": "Menu", "decl": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "line": 6 }, "2": { "name": "get tableName", "decl": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "loc": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "line": 7 }, "3": { "name": "get jsonSchema", "decl": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "loc": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "line": 11 }, "4": { "name": "get relationMappings", "decl": { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } }, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 38, "column": 5 } }, "line": 15 } }, "f": { "0": 1, "1": 4, "2": 41, "3": 1, "4": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 67 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 70 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 44 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 55 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 0 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 46 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 58 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 31 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 22 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 3 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 51 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 43 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 0 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 70 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 36 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 32 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 74 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 66 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 0 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 24 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 0 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 33 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 58 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 15 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 29 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 39 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 21 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 1 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 0 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 45 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 55 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 0 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 15 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 43 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 26 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 24 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 35 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 40 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 37 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 38 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 10 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 21 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 1 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 0 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 38 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 39 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 0 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 15 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 24 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 70 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 21 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 1 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 0 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 33 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 47 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 58 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 15 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 44 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 70 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 21 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 1 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 0 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 38 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 54 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 39 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 55 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 15 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 18 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 15 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 23 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 10 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 21 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 29 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 10 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 21 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 0, "41": 0, "42": 0, "43": 1, "44": 1, "45": 1, "46": 1, "47": 1, "48": 2, "49": 2, "50": 2, "51": 2, "52": 2, "53": 2, "54": 2, "55": 2, "56": 1, "57": 1, "58": 1, "59": 1, "60": 1, "61": 1, "62": 1, "63": 1, "64": 1, "65": 1, "66": 1, "67": 1, "68": 1, "69": 1, "70": 1, "71": 1, "72": 1, "73": 1, "74": 1, "75": 1, "76": 1, "77": 1, "78": 1, "79": 1 }, "branchMap": { "0": { "type": "branch", "line": 80, "loc": { "start": { "line": 80, "column": 1 }, "end": { "line": 80, "column": 1 } }, "locations": [ { "start": { "line": 80, "column": 1 }, "end": { "line": 80, "column": 1 } } ] }, "1": { "type": "branch", "line": 80, "loc": { "start": { "line": 80, "column": 1 }, "end": { "line": 80, "column": 1 } }, "locations": [ { "start": { "line": 80, "column": 1 }, "end": { "line": 80, "column": 1 } } ] }, "2": { "type": "branch", "line": 26, "loc": { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } }, "locations": [ { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } } ] }, "3": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 15 }, "end": { "line": 30, "column": 27 } }, "locations": [ { "start": { "line": 30, "column": 15 }, "end": { "line": 30, "column": 27 } } ] }, "4": { "type": "branch", "line": 34, "loc": { "start": { "line": 34, "column": 0 }, "end": { "line": 47, "column": 1 } }, "locations": [ { "start": { "line": 34, "column": 0 }, "end": { "line": 47, "column": 1 } } ] }, "5": { "type": "branch", "line": 39, "loc": { "start": { "line": 39, "column": 15 }, "end": { "line": 45, "column": 10 } }, "locations": [ { "start": { "line": 39, "column": 15 }, "end": { "line": 45, "column": 10 } } ] }, "6": { "type": "branch", "line": 41, "loc": { "start": { "line": 41, "column": 18 }, "end": { "line": 42, "column": 25 } }, "locations": [ { "start": { "line": 41, "column": 18 }, "end": { "line": 42, "column": 25 } } ] }, "7": { "type": "branch", "line": 40, "loc": { "start": { "line": 40, "column": 24 }, "end": { "line": 44, "column": 21 } }, "locations": [ { "start": { "line": 40, "column": 24 }, "end": { "line": 44, "column": 21 } } ] }, "8": { "type": "branch", "line": 49, "loc": { "start": { "line": 49, "column": 0 }, "end": { "line": 56, "column": 1 } }, "locations": [ { "start": { "line": 49, "column": 0 }, "end": { "line": 56, "column": 1 } } ] }, "9": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 15 }, "end": { "line": 54, "column": 52 } }, "locations": [ { "start": { "line": 54, "column": 15 }, "end": { "line": 54, "column": 52 } } ] }, "10": { "type": "branch", "line": 54, "loc": { "start": { "line": 54, "column": 29 }, "end": { "line": 54, "column": 35 } }, "locations": [ { "start": { "line": 54, "column": 29 }, "end": { "line": 54, "column": 35 } } ] }, "11": { "type": "branch", "line": 58, "loc": { "start": { "line": 58, "column": 0 }, "end": { "line": 65, "column": 1 } }, "locations": [ { "start": { "line": 58, "column": 0 }, "end": { "line": 65, "column": 1 } } ] }, "12": { "type": "branch", "line": 63, "loc": { "start": { "line": 63, "column": 15 }, "end": { "line": 63, "column": 52 } }, "locations": [ { "start": { "line": 63, "column": 15 }, "end": { "line": 63, "column": 52 } } ] }, "13": { "type": "branch", "line": 63, "loc": { "start": { "line": 63, "column": 29 }, "end": { "line": 63, "column": 52 } }, "locations": [ { "start": { "line": 63, "column": 29 }, "end": { "line": 63, "column": 52 } } ] }, "14": { "type": "branch", "line": 67, "loc": { "start": { "line": 67, "column": 0 }, "end": { "line": 80, "column": 1 } }, "locations": [ { "start": { "line": 67, "column": 0 }, "end": { "line": 80, "column": 1 } } ] }, "15": { "type": "branch", "line": 76, "loc": { "start": { "line": 76, "column": 14 }, "end": { "line": 78, "column": 10 } }, "locations": [ { "start": { "line": 76, "column": 14 }, "end": { "line": 78, "column": 10 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 1 ], "4": [ 1 ], "5": [ 1 ], "6": [ 0 ], "7": [ 0 ], "8": [ 2 ], "9": [ 2 ], "10": [ 0 ], "11": [ 1 ], "12": [ 1 ], "13": [ 0 ], "14": [ 1 ], "15": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 80, "column": 1 }, "end": { "line": 80, "column": 1 } }, "loc": { "start": { "line": 80, "column": 1 }, "end": { "line": 80, "column": 1 } }, "line": 80 }, "1": { "name": "create", "decl": { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } }, "loc": { "start": { "line": 26, "column": 0 }, "end": { "line": 32, "column": 1 } }, "line": 26 }, "2": { "name": "getAllCompanyMenus", "decl": { "start": { "line": 34, "column": 0 }, "end": { "line": 47, "column": 1 } }, "loc": { "start": { "line": 34, "column": 0 }, "end": { "line": 47, "column": 1 } }, "line": 34 }, "3": { "name": "getMenuById", "decl": { "start": { "line": 49, "column": 0 }, "end": { "line": 56, "column": 1 } }, "loc": { "start": { "line": 49, "column": 0 }, "end": { "line": 56, "column": 1 } }, "line": 49 }, "4": { "name": "update", "decl": { "start": { "line": 58, "column": 0 }, "end": { "line": 65, "column": 1 } }, "loc": { "start": { "line": 58, "column": 0 }, "end": { "line": 65, "column": 1 } }, "line": 58 }, "5": { "name": "_deleteMenu", "decl": { "start": { "line": 67, "column": 0 }, "end": { "line": 80, "column": 1 } }, "loc": { "start": { "line": 67, "column": 0 }, "end": { "line": 80, "column": 1 } }, "line": 67 } }, "f": { "0": 1, "1": 1, "2": 1, "3": 2, "4": 1, "5": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.service.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 43 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 46 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 58 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 18 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 15 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 15 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 15 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 23 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 16 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 12 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 2 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 0 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 35 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 51 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 16 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 1 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 0 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 39 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 66 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 18 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 7 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 0 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 23 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 1 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 0 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 29 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 37 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 17 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 1 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 0 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 43 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 36 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 29 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 40 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 45 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 1 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 0 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 32 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 39 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 16 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 20 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 5 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 30 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 1 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 0 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 37 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 22 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 17 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 35 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 1 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 0 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 35 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 18 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 38 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 0 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 4 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 0 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 33 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 0 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 31 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 35 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 28 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 39 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 17 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 16 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 1 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 0 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 29 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 54 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 0 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 48 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 2, "14": 2, "15": 2, "16": 0, "17": 1, "18": 2, "19": 2, "20": 1, "21": 1, "22": 1, "23": 2, "24": 0, "25": 1, "26": 0, "27": 0, "28": 0, "29": 0, "30": 1, "31": 2, "32": 2, "33": 2, "34": 1, "35": 2, "36": 0, "37": 1, "38": 4, "39": 4, "40": 2, "41": 2, "42": 2, "43": 0, "44": 0, "45": 1, "46": 2, "47": 2, "48": 2, "49": 2, "50": 1, "51": 1, "52": 1, "53": 1, "54": 1, "55": 1, "56": 1, "57": 1, "58": 1, "59": 1, "60": 4, "61": 4, "62": 4, "63": 2, "64": 2, "65": 4, "66": 0, "67": 1, "68": 0, "69": 0, "70": 0, "71": 0, "72": 0 }, "branchMap": { "0": { "type": "branch", "line": 73, "loc": { "start": { "line": 73, "column": 1 }, "end": { "line": 73, "column": 1 } }, "locations": [ { "start": { "line": 73, "column": 1 }, "end": { "line": 73, "column": 1 } } ] }, "1": { "type": "branch", "line": 73, "loc": { "start": { "line": 73, "column": 1 }, "end": { "line": 73, "column": 1 } }, "locations": [ { "start": { "line": 73, "column": 1 }, "end": { "line": 73, "column": 1 } } ] }, "2": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 0 }, "end": { "line": 17, "column": 1 } }, "locations": [ { "start": { "line": 14, "column": 0 }, "end": { "line": 17, "column": 1 } } ] }, "3": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 16, "column": 11 } }, "locations": [ { "start": { "line": 15, "column": 4 }, "end": { "line": 16, "column": 11 } } ] }, "4": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 4 }, "end": { "line": 17, "column": 1 } }, "locations": [ { "start": { "line": 16, "column": 4 }, "end": { "line": 17, "column": 1 } } ] }, "5": { "type": "branch", "line": 19, "loc": { "start": { "line": 19, "column": 0 }, "end": { "line": 25, "column": 1 } }, "locations": [ { "start": { "line": 19, "column": 0 }, "end": { "line": 25, "column": 1 } } ] }, "6": { "type": "branch", "line": 20, "loc": { "start": { "line": 20, "column": 4 }, "end": { "line": 24, "column": 11 } }, "locations": [ { "start": { "line": 20, "column": 4 }, "end": { "line": 24, "column": 11 } } ] }, "7": { "type": "branch", "line": 24, "loc": { "start": { "line": 24, "column": 4 }, "end": { "line": 25, "column": 1 } }, "locations": [ { "start": { "line": 24, "column": 4 }, "end": { "line": 25, "column": 1 } } ] }, "8": { "type": "branch", "line": 32, "loc": { "start": { "line": 32, "column": 0 }, "end": { "line": 37, "column": 1 } }, "locations": [ { "start": { "line": 32, "column": 0 }, "end": { "line": 37, "column": 1 } } ] }, "9": { "type": "branch", "line": 34, "loc": { "start": { "line": 34, "column": 15 }, "end": { "line": 36, "column": 11 } }, "locations": [ { "start": { "line": 34, "column": 15 }, "end": { "line": 36, "column": 11 } } ] }, "10": { "type": "branch", "line": 36, "loc": { "start": { "line": 36, "column": 4 }, "end": { "line": 37, "column": 1 } }, "locations": [ { "start": { "line": 36, "column": 4 }, "end": { "line": 37, "column": 1 } } ] }, "11": { "type": "branch", "line": 39, "loc": { "start": { "line": 39, "column": 0 }, "end": { "line": 45, "column": 1 } }, "locations": [ { "start": { "line": 39, "column": 0 }, "end": { "line": 45, "column": 1 } } ] }, "12": { "type": "branch", "line": 40, "loc": { "start": { "line": 40, "column": 4 }, "end": { "line": 43, "column": 5 } }, "locations": [ { "start": { "line": 40, "column": 4 }, "end": { "line": 43, "column": 5 } } ] }, "13": { "type": "branch", "line": 43, "loc": { "start": { "line": 43, "column": 5 }, "end": { "line": 45, "column": 1 } }, "locations": [ { "start": { "line": 43, "column": 5 }, "end": { "line": 45, "column": 1 } } ] }, "14": { "type": "branch", "line": 47, "loc": { "start": { "line": 47, "column": 0 }, "end": { "line": 51, "column": 1 } }, "locations": [ { "start": { "line": 47, "column": 0 }, "end": { "line": 51, "column": 1 } } ] }, "15": { "type": "branch", "line": 50, "loc": { "start": { "line": 50, "column": 15 }, "end": { "line": 51, "column": 1 } }, "locations": [ { "start": { "line": 50, "column": 15 }, "end": { "line": 51, "column": 1 } } ] }, "16": { "type": "branch", "line": 61, "loc": { "start": { "line": 61, "column": 0 }, "end": { "line": 67, "column": 1 } }, "locations": [ { "start": { "line": 61, "column": 0 }, "end": { "line": 67, "column": 1 } } ] }, "17": { "type": "branch", "line": 63, "loc": { "start": { "line": 63, "column": 15 }, "end": { "line": 66, "column": 11 } }, "locations": [ { "start": { "line": 63, "column": 15 }, "end": { "line": 66, "column": 11 } } ] }, "18": { "type": "branch", "line": 66, "loc": { "start": { "line": 66, "column": 4 }, "end": { "line": 67, "column": 1 } }, "locations": [ { "start": { "line": 66, "column": 4 }, "end": { "line": 67, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 1 ], "4": [ 0 ], "5": [ 2 ], "6": [ 1 ], "7": [ 0 ], "8": [ 2 ], "9": [ 1 ], "10": [ 0 ], "11": [ 4 ], "12": [ 2 ], "13": [ 0 ], "14": [ 2 ], "15": [ 1 ], "16": [ 4 ], "17": [ 2 ], "18": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 73, "column": 1 }, "end": { "line": 73, "column": 1 } }, "loc": { "start": { "line": 73, "column": 1 }, "end": { "line": 73, "column": 1 } }, "line": 73 }, "1": { "name": "createMenu", "decl": { "start": { "line": 14, "column": 0 }, "end": { "line": 17, "column": 1 } }, "loc": { "start": { "line": 14, "column": 0 }, "end": { "line": 17, "column": 1 } }, "line": 14 }, "2": { "name": "updateMenu", "decl": { "start": { "line": 19, "column": 0 }, "end": { "line": 25, "column": 1 } }, "loc": { "start": { "line": 19, "column": 0 }, "end": { "line": 25, "column": 1 } }, "line": 19 }, "3": { "name": "getAllMenu", "decl": { "start": { "line": 27, "column": 0 }, "end": { "line": 30, "column": 1 } }, "loc": { "start": { "line": 27, "column": 0 }, "end": { "line": 30, "column": 1 } }, "line": 27 }, "4": { "name": "getAllCompanyMenus", "decl": { "start": { "line": 32, "column": 0 }, "end": { "line": 37, "column": 1 } }, "loc": { "start": { "line": 32, "column": 0 }, "end": { "line": 37, "column": 1 } }, "line": 32 }, "5": { "name": "getMenuById", "decl": { "start": { "line": 39, "column": 0 }, "end": { "line": 45, "column": 1 } }, "loc": { "start": { "line": 39, "column": 0 }, "end": { "line": 45, "column": 1 } }, "line": 39 }, "6": { "name": "_delete", "decl": { "start": { "line": 47, "column": 0 }, "end": { "line": 51, "column": 1 } }, "loc": { "start": { "line": 47, "column": 0 }, "end": { "line": 51, "column": 1 } }, "line": 47 }, "7": { "name": "getMenu", "decl": { "start": { "line": 61, "column": 0 }, "end": { "line": 67, "column": 1 } }, "loc": { "start": { "line": 61, "column": 0 }, "end": { "line": 67, "column": 1 } }, "line": 61 }, "8": { "name": "basicDetails", "decl": { "start": { "line": 69, "column": 0 }, "end": { "line": 73, "column": 1 } }, "loc": { "start": { "line": 69, "column": 0 }, "end": { "line": 73, "column": 1 } }, "line": 69 } }, "f": { "0": 1, "1": 2, "2": 2, "3": 0, "4": 2, "5": 4, "6": 2, "7": 4, "8": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/menu/menu.validator.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 27 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 73 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 44 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 38 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 45 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 32 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 7 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 39 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 2 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 44 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 25 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 37 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 44 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 42 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 6 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 43 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 0 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 39 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1 }, "branchMap": { "0": { "type": "branch", "line": 23, "loc": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "locations": [ { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } } ] }, "1": { "type": "branch", "line": 23, "loc": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "locations": [ { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } } ] }, "2": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 11, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 23 }, "end": { "line": 11, "column": 2 } } ] }, "3": { "type": "branch", "line": 13, "loc": { "start": { "line": 13, "column": 23 }, "end": { "line": 23, "column": 2 } }, "locations": [ { "start": { "line": 13, "column": 23 }, "end": { "line": 23, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "loc": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "line": 23 }, "1": { "name": "Object.<anonymous>.exports.createSchema", "decl": { "start": { "line": 4, "column": 23 }, "end": { "line": 11, "column": 2 } }, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 11, "column": 2 } }, "line": 4 }, "2": { "name": "Object.<anonymous>.exports.updateSchema", "decl": { "start": { "line": 13, "column": 23 }, "end": { "line": 23, "column": 2 } }, "loc": { "start": { "line": 13, "column": 23 }, "end": { "line": 23, "column": 2 } }, "line": 13 } }, "f": { "0": 1, "1": 1, "2": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 60 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 34 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 46 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 0 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 27 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 28 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 32 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 5 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 29 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 22 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 5 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 35 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 52 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 65 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 0 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 16 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 20 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 48 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 38 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 23 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 51 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 59 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 18 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 14 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 22 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 53 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 36 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 23 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 59 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 51 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 18 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 14 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 10 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 5 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 1 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 0 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 15 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 0 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 23 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 7, "8": 7, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1 }, "branchMap": { "0": { "type": "branch", "line": 42, "loc": { "start": { "line": 42, "column": 23 }, "end": { "line": 42, "column": 23 } }, "locations": [ { "start": { "line": 42, "column": 23 }, "end": { "line": 42, "column": 23 } } ] }, "1": { "type": "branch", "line": 42, "loc": { "start": { "line": 42, "column": 23 }, "end": { "line": 42, "column": 23 } }, "locations": [ { "start": { "line": 42, "column": 23 }, "end": { "line": 42, "column": 23 } } ] }, "2": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "locations": [ { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } } ] }, "3": { "type": "branch", "line": 7, "loc": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "locations": [ { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } } ] }, "4": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "locations": [ { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } } ] }, "5": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 37, "column": 5 } }, "locations": [ { "start": { "line": 15, "column": 4 }, "end": { "line": 37, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 7 ], "4": [ 1 ], "5": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 42, "column": 23 }, "end": { "line": 42, "column": 23 } }, "loc": { "start": { "line": 42, "column": 23 }, "end": { "line": 42, "column": 23 } }, "line": 42 }, "1": { "name": "Order", "decl": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 6 } }, "line": 6 }, "2": { "name": "get tableName", "decl": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "loc": { "start": { "line": 7, "column": 4 }, "end": { "line": 9, "column": 5 } }, "line": 7 }, "3": { "name": "get jsonSchema", "decl": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "loc": { "start": { "line": 11, "column": 4 }, "end": { "line": 13, "column": 5 } }, "line": 11 }, "4": { "name": "get relationMappings", "decl": { "start": { "line": 15, "column": 4 }, "end": { "line": 37, "column": 5 } }, "loc": { "start": { "line": 15, "column": 4 }, "end": { "line": 37, "column": 5 } }, "line": 15 } }, "f": { "0": 1, "1": 1, "2": 7, "3": 1, "4": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 7 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 22 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 22 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 23 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 34 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 70 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 44 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 48 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 58 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 31 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 22 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 3 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 0 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 46 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 0 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 53 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 49 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 13 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 11 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 22 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 35 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 15 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 2 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 41 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 64 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 11 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 22 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 23 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 35 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 14 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 20 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 2 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 0 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 38 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 21 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 34 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 52 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 50 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 46 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 6 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 0 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 16 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 29 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 28 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 22 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 72 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 14 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 9 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 21 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 1 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 0 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 38 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 16 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 55 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 41 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 21 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 1 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 0 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 39 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 16 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 25 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 73 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 21 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 1 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 0 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 39 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 16 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 34 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 77 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 21 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 1 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 0 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 43 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 31 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 0 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 46 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 16 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 33 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 77 } }, "82": { "start": { "line": 83, "column": 0 }, "end": { "line": 83, "column": 21 } }, "83": { "start": { "line": 84, "column": 0 }, "end": { "line": 84, "column": 1 } }, "84": { "start": { "line": 85, "column": 0 }, "end": { "line": 85, "column": 24 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1, "37": 1, "38": 1, "39": 1, "40": 1, "41": 1, "42": 1, "43": 1, "44": 1, "45": 1, "46": 1, "47": 1, "48": 1, "49": 1, "50": 1, "51": 1, "52": 1, "53": 1, "54": 0, "55": 0, "56": 0, "57": 0, "58": 0, "59": 0, "60": 1, "61": 0, "62": 0, "63": 0, "64": 0, "65": 0, "66": 0, "67": 1, "68": 0, "69": 0, "70": 0, "71": 0, "72": 0, "73": 0, "74": 1, "75": 0, "76": 0, "77": 0, "78": 0, "79": 0, "80": 0, "81": 0, "82": 0, "83": 0, "84": 1 }, "branchMap": { "0": { "type": "branch", "line": 85, "loc": { "start": { "line": 85, "column": 24 }, "end": { "line": 85, "column": 24 } }, "locations": [ { "start": { "line": 85, "column": 24 }, "end": { "line": 85, "column": 24 } } ] }, "1": { "type": "branch", "line": 85, "loc": { "start": { "line": 85, "column": 24 }, "end": { "line": 85, "column": 24 } }, "locations": [ { "start": { "line": 85, "column": 24 }, "end": { "line": 85, "column": 24 } } ] }, "2": { "type": "branch", "line": 37, "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 53, "column": 1 } }, "locations": [ { "start": { "line": 37, "column": 0 }, "end": { "line": 53, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 85, "column": 24 }, "end": { "line": 85, "column": 24 } }, "loc": { "start": { "line": 85, "column": 24 }, "end": { "line": 85, "column": 24 } }, "line": 85 }, "1": { "name": "createOrder", "decl": { "start": { "line": 37, "column": 0 }, "end": { "line": 53, "column": 1 } }, "loc": { "start": { "line": 37, "column": 0 }, "end": { "line": 53, "column": 1 } }, "line": 37 }, "2": { "name": "updateOrder", "decl": { "start": { "line": 55, "column": 0 }, "end": { "line": 60, "column": 1 } }, "loc": { "start": { "line": 55, "column": 0 }, "end": { "line": 60, "column": 1 } }, "line": 55 }, "3": { "name": "getOrderById", "decl": { "start": { "line": 62, "column": 0 }, "end": { "line": 67, "column": 1 } }, "loc": { "start": { "line": 62, "column": 0 }, "end": { "line": 67, "column": 1 } }, "line": 62 }, "4": { "name": "getOwnOrders", "decl": { "start": { "line": 69, "column": 0 }, "end": { "line": 74, "column": 1 } }, "loc": { "start": { "line": 69, "column": 0 }, "end": { "line": 74, "column": 1 } }, "line": 69 }, "5": { "name": "getCompanyOrders", "decl": { "start": { "line": 76, "column": 0 }, "end": { "line": 84, "column": 1 } }, "loc": { "start": { "line": 76, "column": 0 }, "end": { "line": 84, "column": 1 } }, "line": 76 } }, "f": { "0": 1, "1": 1, "2": 0, "3": 0, "4": 0, "5": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.service.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 18 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 16 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 20 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 16 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 17 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 17 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 21 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 2 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 36 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 73 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 0 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 46 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 59 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 35 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 24 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 34 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 7 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 0 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 21 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 1 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 0 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 44 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 37 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 18 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 26 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 36 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 27 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 31 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 35 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 21 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 56 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 0 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 25 } }, "37": { "start": { "line": 38, "column": 0 }, "end": { "line": 38, "column": 5 } }, "38": { "start": { "line": 39, "column": 0 }, "end": { "line": 39, "column": 0 } }, "39": { "start": { "line": 40, "column": 0 }, "end": { "line": 40, "column": 27 } }, "40": { "start": { "line": 41, "column": 0 }, "end": { "line": 41, "column": 31 } }, "41": { "start": { "line": 42, "column": 0 }, "end": { "line": 42, "column": 16 } }, "42": { "start": { "line": 43, "column": 0 }, "end": { "line": 43, "column": 43 } }, "43": { "start": { "line": 44, "column": 0 }, "end": { "line": 44, "column": 10 } }, "44": { "start": { "line": 45, "column": 0 }, "end": { "line": 45, "column": 16 } }, "45": { "start": { "line": 46, "column": 0 }, "end": { "line": 46, "column": 44 } }, "46": { "start": { "line": 47, "column": 0 }, "end": { "line": 47, "column": 10 } }, "47": { "start": { "line": 48, "column": 0 }, "end": { "line": 48, "column": 24 } }, "48": { "start": { "line": 49, "column": 0 }, "end": { "line": 49, "column": 0 } }, "49": { "start": { "line": 50, "column": 0 }, "end": { "line": 50, "column": 21 } }, "50": { "start": { "line": 51, "column": 0 }, "end": { "line": 51, "column": 1 } }, "51": { "start": { "line": 52, "column": 0 }, "end": { "line": 52, "column": 0 } }, "52": { "start": { "line": 53, "column": 0 }, "end": { "line": 53, "column": 46 } }, "53": { "start": { "line": 54, "column": 0 }, "end": { "line": 54, "column": 63 } }, "54": { "start": { "line": 55, "column": 0 }, "end": { "line": 55, "column": 0 } }, "55": { "start": { "line": 56, "column": 0 }, "end": { "line": 56, "column": 47 } }, "56": { "start": { "line": 57, "column": 0 }, "end": { "line": 57, "column": 47 } }, "57": { "start": { "line": 58, "column": 0 }, "end": { "line": 58, "column": 20 } }, "58": { "start": { "line": 59, "column": 0 }, "end": { "line": 59, "column": 5 } }, "59": { "start": { "line": 60, "column": 0 }, "end": { "line": 60, "column": 29 } }, "60": { "start": { "line": 61, "column": 0 }, "end": { "line": 61, "column": 62 } }, "61": { "start": { "line": 62, "column": 0 }, "end": { "line": 62, "column": 0 } }, "62": { "start": { "line": 63, "column": 0 }, "end": { "line": 63, "column": 17 } }, "63": { "start": { "line": 64, "column": 0 }, "end": { "line": 64, "column": 1 } }, "64": { "start": { "line": 65, "column": 0 }, "end": { "line": 65, "column": 0 } }, "65": { "start": { "line": 66, "column": 0 }, "end": { "line": 66, "column": 33 } }, "66": { "start": { "line": 67, "column": 0 }, "end": { "line": 67, "column": 63 } }, "67": { "start": { "line": 68, "column": 0 }, "end": { "line": 68, "column": 17 } }, "68": { "start": { "line": 69, "column": 0 }, "end": { "line": 69, "column": 1 } }, "69": { "start": { "line": 70, "column": 0 }, "end": { "line": 70, "column": 0 } }, "70": { "start": { "line": 71, "column": 0 }, "end": { "line": 71, "column": 33 } }, "71": { "start": { "line": 72, "column": 0 }, "end": { "line": 72, "column": 38 } }, "72": { "start": { "line": 73, "column": 0 }, "end": { "line": 73, "column": 31 } }, "73": { "start": { "line": 74, "column": 0 }, "end": { "line": 74, "column": 31 } }, "74": { "start": { "line": 75, "column": 0 }, "end": { "line": 75, "column": 18 } }, "75": { "start": { "line": 76, "column": 0 }, "end": { "line": 76, "column": 1 } }, "76": { "start": { "line": 77, "column": 0 }, "end": { "line": 77, "column": 0 } }, "77": { "start": { "line": 78, "column": 0 }, "end": { "line": 78, "column": 41 } }, "78": { "start": { "line": 79, "column": 0 }, "end": { "line": 79, "column": 75 } }, "79": { "start": { "line": 80, "column": 0 }, "end": { "line": 80, "column": 18 } }, "80": { "start": { "line": 81, "column": 0 }, "end": { "line": 81, "column": 1 } }, "81": { "start": { "line": 82, "column": 0 }, "end": { "line": 82, "column": 59 } }, "82": { "start": { "line": 83, "column": 0 }, "end": { "line": 83, "column": 46 } }, "83": { "start": { "line": 84, "column": 0 }, "end": { "line": 84, "column": 51 } }, "84": { "start": { "line": 85, "column": 0 }, "end": { "line": 85, "column": 43 } }, "85": { "start": { "line": 86, "column": 0 }, "end": { "line": 86, "column": 42 } }, "86": { "start": { "line": 87, "column": 0 }, "end": { "line": 87, "column": 0 } }, "87": { "start": { "line": 88, "column": 0 }, "end": { "line": 88, "column": 35 } }, "88": { "start": { "line": 89, "column": 0 }, "end": { "line": 89, "column": 16 } }, "89": { "start": { "line": 90, "column": 0 }, "end": { "line": 90, "column": 24 } }, "90": { "start": { "line": 91, "column": 0 }, "end": { "line": 91, "column": 46 } }, "91": { "start": { "line": 92, "column": 0 }, "end": { "line": 92, "column": 10 } }, "92": { "start": { "line": 93, "column": 0 }, "end": { "line": 93, "column": 17 } }, "93": { "start": { "line": 94, "column": 0 }, "end": { "line": 94, "column": 0 } }, "94": { "start": { "line": 95, "column": 0 }, "end": { "line": 95, "column": 17 } }, "95": { "start": { "line": 96, "column": 0 }, "end": { "line": 96, "column": 21 } }, "96": { "start": { "line": 97, "column": 0 }, "end": { "line": 97, "column": 44 } }, "97": { "start": { "line": 98, "column": 0 }, "end": { "line": 98, "column": 24 } }, "98": { "start": { "line": 99, "column": 0 }, "end": { "line": 99, "column": 23 } }, "99": { "start": { "line": 100, "column": 0 }, "end": { "line": 100, "column": 46 } }, "100": { "start": { "line": 101, "column": 0 }, "end": { "line": 101, "column": 38 } }, "101": { "start": { "line": 102, "column": 0 }, "end": { "line": 102, "column": 11 } }, "102": { "start": { "line": 103, "column": 0 }, "end": { "line": 103, "column": 5 } }, "103": { "start": { "line": 104, "column": 0 }, "end": { "line": 104, "column": 0 } }, "104": { "start": { "line": 105, "column": 0 }, "end": { "line": 105, "column": 17 } }, "105": { "start": { "line": 106, "column": 0 }, "end": { "line": 106, "column": 1 } }, "106": { "start": { "line": 107, "column": 0 }, "end": { "line": 107, "column": 0 } }, "107": { "start": { "line": 108, "column": 0 }, "end": { "line": 108, "column": 33 } }, "108": { "start": { "line": 109, "column": 0 }, "end": { "line": 109, "column": 0 } }, "109": { "start": { "line": 110, "column": 0 }, "end": { "line": 110, "column": 29 } }, "110": { "start": { "line": 111, "column": 0 }, "end": { "line": 111, "column": 61 } }, "111": { "start": { "line": 112, "column": 0 }, "end": { "line": 112, "column": 17 } }, "112": { "start": { "line": 113, "column": 0 }, "end": { "line": 113, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 2, "12": 2, "13": 0, "14": 0, "15": 0, "16": 0, "17": 0, "18": 0, "19": 0, "20": 0, "21": 0, "22": 0, "23": 1, "24": 0, "25": 0, "26": 0, "27": 0, "28": 0, "29": 0, "30": 0, "31": 0, "32": 0, "33": 0, "34": 0, "35": 0, "36": 0, "37": 0, "38": 0, "39": 0, "40": 0, "41": 0, "42": 0, "43": 0, "44": 0, "45": 0, "46": 0, "47": 0, "48": 0, "49": 0, "50": 0, "51": 1, "52": 0, "53": 0, "54": 0, "55": 0, "56": 0, "57": 0, "58": 0, "59": 0, "60": 0, "61": 0, "62": 0, "63": 0, "64": 1, "65": 0, "66": 0, "67": 0, "68": 0, "69": 1, "70": 0, "71": 0, "72": 0, "73": 0, "74": 0, "75": 0, "76": 1, "77": 0, "78": 0, "79": 0, "80": 0, "81": 1, "82": 3, "83": 3, "84": 3, "85": 3, "86": 3, "87": 3, "88": 3, "89": 1, "90": 1, "91": 1, "92": 1, "93": 1, "94": 1, "95": 1, "96": 1, "97": 0, "98": 0, "99": 0, "100": 0, "101": 0, "102": 0, "103": 0, "104": 0, "105": 0, "106": 1, "107": 1, "108": 1, "109": 0, "110": 0, "111": 0, "112": 0 }, "branchMap": { "0": { "type": "branch", "line": 113, "loc": { "start": { "line": 113, "column": 1 }, "end": { "line": 113, "column": 1 } }, "locations": [ { "start": { "line": 113, "column": 1 }, "end": { "line": 113, "column": 1 } } ] }, "1": { "type": "branch", "line": 113, "loc": { "start": { "line": 113, "column": 1 }, "end": { "line": 113, "column": 1 } }, "locations": [ { "start": { "line": 113, "column": 1 }, "end": { "line": 113, "column": 1 } } ] }, "2": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 0 }, "end": { "line": 23, "column": 1 } }, "locations": [ { "start": { "line": 12, "column": 0 }, "end": { "line": 23, "column": 1 } } ] }, "3": { "type": "branch", "line": 13, "loc": { "start": { "line": 13, "column": 4 }, "end": { "line": 23, "column": 1 } }, "locations": [ { "start": { "line": 13, "column": 4 }, "end": { "line": 23, "column": 1 } } ] }, "4": { "type": "branch", "line": 83, "loc": { "start": { "line": 83, "column": 0 }, "end": { "line": 106, "column": 1 } }, "locations": [ { "start": { "line": 83, "column": 0 }, "end": { "line": 106, "column": 1 } } ] }, "5": { "type": "branch", "line": 91, "loc": { "start": { "line": 91, "column": 26 }, "end": { "line": 91, "column": 46 } }, "locations": [ { "start": { "line": 91, "column": 26 }, "end": { "line": 91, "column": 46 } } ] }, "6": { "type": "branch", "line": 89, "loc": { "start": { "line": 89, "column": 15 }, "end": { "line": 103, "column": 5 } }, "locations": [ { "start": { "line": 89, "column": 15 }, "end": { "line": 103, "column": 5 } } ] }, "7": { "type": "branch", "line": 100, "loc": { "start": { "line": 100, "column": 26 }, "end": { "line": 100, "column": 46 } }, "locations": [ { "start": { "line": 100, "column": 26 }, "end": { "line": 100, "column": 46 } } ] }, "8": { "type": "branch", "line": 97, "loc": { "start": { "line": 97, "column": 8 }, "end": { "line": 103, "column": 5 } }, "locations": [ { "start": { "line": 97, "column": 8 }, "end": { "line": 103, "column": 5 } } ] }, "9": { "type": "branch", "line": 103, "loc": { "start": { "line": 103, "column": 5 }, "end": { "line": 106, "column": 1 } }, "locations": [ { "start": { "line": 103, "column": 5 }, "end": { "line": 106, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ], "3": [ 0 ], "4": [ 3 ], "5": [ 0 ], "6": [ 1 ], "7": [ 0 ], "8": [ 0 ], "9": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 113, "column": 1 }, "end": { "line": 113, "column": 1 } }, "loc": { "start": { "line": 113, "column": 1 }, "end": { "line": 113, "column": 1 } }, "line": 113 }, "1": { "name": "createOrder", "decl": { "start": { "line": 12, "column": 0 }, "end": { "line": 23, "column": 1 } }, "loc": { "start": { "line": 12, "column": 0 }, "end": { "line": 23, "column": 1 } }, "line": 12 }, "2": { "name": "updateOrderItem", "decl": { "start": { "line": 25, "column": 0 }, "end": { "line": 51, "column": 1 } }, "loc": { "start": { "line": 25, "column": 0 }, "end": { "line": 51, "column": 1 } }, "line": 25 }, "3": { "name": "updateOrder", "decl": { "start": { "line": 53, "column": 0 }, "end": { "line": 64, "column": 1 } }, "loc": { "start": { "line": 53, "column": 0 }, "end": { "line": 64, "column": 1 } }, "line": 53 }, "4": { "name": "getOrderById", "decl": { "start": { "line": 66, "column": 0 }, "end": { "line": 69, "column": 1 } }, "loc": { "start": { "line": 66, "column": 0 }, "end": { "line": 69, "column": 1 } }, "line": 66 }, "5": { "name": "getOwnOrders", "decl": { "start": { "line": 71, "column": 0 }, "end": { "line": 76, "column": 1 } }, "loc": { "start": { "line": 71, "column": 0 }, "end": { "line": 76, "column": 1 } }, "line": 71 }, "6": { "name": "getCompanyOrders", "decl": { "start": { "line": 78, "column": 0 }, "end": { "line": 81, "column": 1 } }, "loc": { "start": { "line": 78, "column": 0 }, "end": { "line": 81, "column": 1 } }, "line": 78 }, "7": { "name": "get_or_create", "decl": { "start": { "line": 83, "column": 0 }, "end": { "line": 106, "column": 1 } }, "loc": { "start": { "line": 83, "column": 0 }, "end": { "line": 106, "column": 1 } }, "line": 83 }, "8": { "name": "getOrder", "decl": { "start": { "line": 110, "column": 0 }, "end": { "line": 113, "column": 1 } }, "loc": { "start": { "line": 110, "column": 0 }, "end": { "line": 113, "column": 1 } }, "line": 110 } }, "f": { "0": 1, "1": 2, "2": 0, "3": 0, "4": 0, "5": 0, "6": 0, "7": 3, "8": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/order.validators.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 27 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 73 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 49 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 44 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 42 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 41 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 7 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 39 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 2 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 49 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 31 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 45 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 48 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 7 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 0 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 39 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 2 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 0 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 50 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 31 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 42 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 45 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 48 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 7 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 0 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 39 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 2, "5": 2, "6": 2, "7": 2, "8": 2, "9": 2, "10": 2, "11": 1, "12": 1, "13": 0, "14": 0, "15": 0, "16": 0, "17": 0, "18": 0, "19": 0, "20": 1, "21": 1, "22": 0, "23": 0, "24": 0, "25": 0, "26": 0, "27": 0, "28": 0, "29": 0 }, "branchMap": { "0": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 2 } }, "locations": [ { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 2 } } ] }, "1": { "type": "branch", "line": 30, "loc": { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 2 } }, "locations": [ { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 2 } } ] }, "2": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 28 }, "end": { "line": 11, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 28 }, "end": { "line": 11, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 2 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 2 } }, "loc": { "start": { "line": 30, "column": 2 }, "end": { "line": 30, "column": 2 } }, "line": 30 }, "1": { "name": "Object.<anonymous>.exports.createOrderSchema", "decl": { "start": { "line": 4, "column": 28 }, "end": { "line": 11, "column": 2 } }, "loc": { "start": { "line": 4, "column": 28 }, "end": { "line": 11, "column": 2 } }, "line": 4 }, "2": { "name": "Object.<anonymous>.exports.updateOrderSchema", "decl": { "start": { "line": 13, "column": 28 }, "end": { "line": 20, "column": 2 } }, "loc": { "start": { "line": 13, "column": 28 }, "end": { "line": 20, "column": 2 } }, "line": 13 }, "3": { "name": "Object.<anonymous>.exports.companyOrderSchema", "decl": { "start": { "line": 22, "column": 29 }, "end": { "line": 30, "column": 2 } }, "loc": { "start": { "line": 22, "column": 29 }, "end": { "line": 30, "column": 2 } }, "line": 22 } }, "f": { "0": 1, "1": 2, "2": 0, "3": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 63 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 37 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 28 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 36 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 5 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 35 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 48 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 16 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 20 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 53 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 34 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 23 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 61 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 49 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 18 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 14 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 10 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 5 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 1 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 0 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 15 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 0 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 27 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 0, "7": 0, "8": 1, "9": 1, "10": 0, "11": 0, "12": 0, "13": 0, "14": 0, "15": 0, "16": 0, "17": 0, "18": 0, "19": 0, "20": 0, "21": 0, "22": 0, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1 }, "branchMap": { "0": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 27 }, "end": { "line": 28, "column": 27 } }, "locations": [ { "start": { "line": 28, "column": 27 }, "end": { "line": 28, "column": 27 } } ] }, "1": { "type": "branch", "line": 28, "loc": { "start": { "line": 28, "column": 27 }, "end": { "line": 28, "column": 27 } }, "locations": [ { "start": { "line": 28, "column": 27 }, "end": { "line": 28, "column": 27 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 28, "column": 27 }, "end": { "line": 28, "column": 27 } }, "loc": { "start": { "line": 28, "column": 27 }, "end": { "line": 28, "column": 27 } }, "line": 28 }, "1": { "name": "OrderItem", "decl": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "line": 5 }, "2": { "name": "get tableName", "decl": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "line": 6 }, "3": { "name": "get relationMappings", "decl": { "start": { "line": 10, "column": 4 }, "end": { "line": 23, "column": 5 } }, "loc": { "start": { "line": 10, "column": 4 }, "end": { "line": 23, "column": 5 } }, "line": 10 } }, "f": { "0": 1, "1": 0, "2": 0, "3": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/company/order/orderItem/orderItem.routes.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 64 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 47 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 49 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 0 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 31 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 22 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 3 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 54 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 42 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 35 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 1 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 0 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 24 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 0, "12": 0, "13": 0, "14": 1, "15": 1 }, "branchMap": { "0": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 24 }, "end": { "line": 16, "column": 24 } }, "locations": [ { "start": { "line": 16, "column": 24 }, "end": { "line": 16, "column": 24 } } ] }, "1": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 24 }, "end": { "line": 16, "column": 24 } }, "locations": [ { "start": { "line": 16, "column": 24 }, "end": { "line": 16, "column": 24 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 16, "column": 24 }, "end": { "line": 16, "column": 24 } }, "loc": { "start": { "line": 16, "column": 24 }, "end": { "line": 16, "column": 24 } }, "line": 16 }, "1": { "name": "updateOrderItem", "decl": { "start": { "line": 12, "column": 0 }, "end": { "line": 14, "column": 1 } }, "loc": { "start": { "line": 12, "column": 0 }, "end": { "line": 14, "column": 1 } }, "line": 12 } }, "f": { "0": 1, "1": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/index.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 32 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 31 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 14 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 34 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 7 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 3 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 55 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 60 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 0 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 24 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1 }, "branchMap": { "0": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 24 }, "end": { "line": 14, "column": 24 } }, "locations": [ { "start": { "line": 14, "column": 24 }, "end": { "line": 14, "column": 24 } } ] }, "1": { "type": "branch", "line": 14, "loc": { "start": { "line": 14, "column": 24 }, "end": { "line": 14, "column": 24 } }, "locations": [ { "start": { "line": 14, "column": 24 }, "end": { "line": 14, "column": 24 } } ] }, "2": { "type": "branch", "line": 5, "loc": { "start": { "line": 5, "column": 16 }, "end": { "line": 9, "column": 3 } }, "locations": [ { "start": { "line": 5, "column": 16 }, "end": { "line": 9, "column": 3 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 14, "column": 24 }, "end": { "line": 14, "column": 24 } }, "loc": { "start": { "line": 14, "column": 24 }, "end": { "line": 14, "column": 24 } }, "line": 14 } }, "f": { "0": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/api/user/user.model.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 39 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 57 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 31 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 0 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 26 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 28 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 31 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 5 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 1 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 0 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 15 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 0 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 22 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 81, "7": 81, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1 }, "branchMap": { "0": { "type": "branch", "line": 13, "loc": { "start": { "line": 13, "column": 22 }, "end": { "line": 13, "column": 22 } }, "locations": [ { "start": { "line": 13, "column": 22 }, "end": { "line": 13, "column": 22 } } ] }, "1": { "type": "branch", "line": 13, "loc": { "start": { "line": 13, "column": 22 }, "end": { "line": 13, "column": 22 } }, "locations": [ { "start": { "line": 13, "column": 22 }, "end": { "line": 13, "column": 22 } } ] }, "2": { "type": "branch", "line": 5, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "locations": [ { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } } ] }, "3": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "locations": [ { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 27 ], "3": [ 81 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 13, "column": 22 }, "end": { "line": 13, "column": 22 } }, "loc": { "start": { "line": 13, "column": 22 }, "end": { "line": 13, "column": 22 } }, "line": 13 }, "1": { "name": "User", "decl": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "loc": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 6 } }, "line": 5 }, "2": { "name": "get tableName", "decl": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "loc": { "start": { "line": 6, "column": 4 }, "end": { "line": 8, "column": 5 } }, "line": 6 } }, "f": { "0": 1, "1": 27, "2": 81 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/app.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 33 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 43 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 33 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 29 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 0 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 16 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 22 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 48 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 51 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 27 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 0 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 45 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 29 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 0 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 22 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 0 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 23 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 18 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 16 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 23 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 24 } }, "23": { "start": { "line": 24, "column": 0 }, "end": { "line": 24, "column": 0 } }, "24": { "start": { "line": 25, "column": 0 }, "end": { "line": 25, "column": 28 } }, "25": { "start": { "line": 26, "column": 0 }, "end": { "line": 26, "column": 14 } }, "26": { "start": { "line": 27, "column": 0 }, "end": { "line": 27, "column": 38 } }, "27": { "start": { "line": 28, "column": 0 }, "end": { "line": 28, "column": 7 } }, "28": { "start": { "line": 29, "column": 0 }, "end": { "line": 29, "column": 3 } }, "29": { "start": { "line": 30, "column": 0 }, "end": { "line": 30, "column": 0 } }, "30": { "start": { "line": 31, "column": 0 }, "end": { "line": 31, "column": 24 } }, "31": { "start": { "line": 32, "column": 0 }, "end": { "line": 32, "column": 67 } }, "32": { "start": { "line": 33, "column": 0 }, "end": { "line": 33, "column": 0 } }, "33": { "start": { "line": 34, "column": 0 }, "end": { "line": 34, "column": 30 } }, "34": { "start": { "line": 35, "column": 0 }, "end": { "line": 35, "column": 34 } }, "35": { "start": { "line": 36, "column": 0 }, "end": { "line": 36, "column": 0 } }, "36": { "start": { "line": 37, "column": 0 }, "end": { "line": 37, "column": 21 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1, "12": 1, "13": 1, "14": 1, "15": 1, "16": 1, "17": 1, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1, "23": 1, "24": 1, "25": 1, "26": 1, "27": 1, "28": 1, "29": 1, "30": 1, "31": 1, "32": 1, "33": 1, "34": 1, "35": 1, "36": 1 }, "branchMap": { "0": { "type": "branch", "line": 37, "loc": { "start": { "line": 37, "column": 21 }, "end": { "line": 37, "column": 21 } }, "locations": [ { "start": { "line": 37, "column": 21 }, "end": { "line": 37, "column": 21 } } ] }, "1": { "type": "branch", "line": 37, "loc": { "start": { "line": 37, "column": 21 }, "end": { "line": 37, "column": 21 } }, "locations": [ { "start": { "line": 37, "column": 21 }, "end": { "line": 37, "column": 21 } } ] }, "2": { "type": "branch", "line": 25, "loc": { "start": { "line": 25, "column": 13 }, "end": { "line": 29, "column": 3 } }, "locations": [ { "start": { "line": 25, "column": 13 }, "end": { "line": 29, "column": 3 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 37, "column": 21 }, "end": { "line": 37, "column": 21 } }, "loc": { "start": { "line": 37, "column": 21 }, "end": { "line": 37, "column": 21 } }, "line": 37 } }, "f": { "0": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/constants/tableNames.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 18 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 17 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 23 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 23 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 25 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 25 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 17 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 17 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 19 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 27 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 25 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1 }, "branchMap": { "0": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 2 } }, "locations": [ { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 2 } } ] }, "1": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 2 } }, "locations": [ { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 2 } }, "loc": { "start": { "line": 12, "column": 2 }, "end": { "line": 12, "column": 2 } }, "line": 12 } }, "f": { "0": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/db.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 29 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 39 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 40 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 58 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 47 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 0 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 34 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 0 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 15 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 0 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 20 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 1, "8": 1, "9": 1, "10": 1, "11": 1 }, "branchMap": { "0": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 20 }, "end": { "line": 12, "column": 20 } }, "locations": [ { "start": { "line": 12, "column": 20 }, "end": { "line": 12, "column": 20 } } ] }, "1": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 20 }, "end": { "line": 12, "column": 20 } }, "locations": [ { "start": { "line": 12, "column": 20 }, "end": { "line": 12, "column": 20 } } ] }, "2": { "type": "branch", "line": 5, "loc": { "start": { "line": 5, "column": 20 }, "end": { "line": 5, "column": 58 } }, "locations": [ { "start": { "line": 5, "column": 20 }, "end": { "line": 5, "column": 58 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 12, "column": 20 }, "end": { "line": 12, "column": 20 } }, "loc": { "start": { "line": 12, "column": 20 }, "end": { "line": 12, "column": 20 } }, "line": 12 } }, "f": { "0": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/middlewares.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 35 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 20 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 67 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 16 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 1 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 0 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 35 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 44 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 38 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 69 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 27 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 75 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 21 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 14 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 36 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 72 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 7 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 1 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 0 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 18 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 13 } }, "21": { "start": { "line": 22, "column": 0 }, "end": { "line": 22, "column": 17 } }, "22": { "start": { "line": 23, "column": 0 }, "end": { "line": 23, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1, "6": 1, "7": 6, "8": 6, "9": 6, "10": 6, "11": 6, "12": 6, "13": 6, "14": 6, "15": 6, "16": 6, "17": 6, "18": 1, "19": 1, "20": 1, "21": 1, "22": 1 }, "branchMap": { "0": { "type": "branch", "line": 23, "loc": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "locations": [ { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } } ] }, "1": { "type": "branch", "line": 23, "loc": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "locations": [ { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } } ] }, "2": { "type": "branch", "line": 1, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 5, "column": 1 } }, "locations": [ { "start": { "line": 1, "column": 0 }, "end": { "line": 5, "column": 1 } } ] }, "3": { "type": "branch", "line": 8, "loc": { "start": { "line": 8, "column": 0 }, "end": { "line": 18, "column": 1 } }, "locations": [ { "start": { "line": 8, "column": 0 }, "end": { "line": 18, "column": 1 } } ] }, "4": { "type": "branch", "line": 10, "loc": { "start": { "line": 10, "column": 23 }, "end": { "line": 10, "column": 65 } }, "locations": [ { "start": { "line": 10, "column": 23 }, "end": { "line": 10, "column": 65 } } ] }, "5": { "type": "branch", "line": 15, "loc": { "start": { "line": 15, "column": 17 }, "end": { "line": 15, "column": 36 } }, "locations": [ { "start": { "line": 15, "column": 17 }, "end": { "line": 15, "column": 36 } } ] }, "6": { "type": "branch", "line": 16, "loc": { "start": { "line": 16, "column": 15 }, "end": { "line": 16, "column": 62 } }, "locations": [ { "start": { "line": 16, "column": 15 }, "end": { "line": 16, "column": 62 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 6 ], "4": [ 0 ], "5": [ 1 ], "6": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "loc": { "start": { "line": 23, "column": 2 }, "end": { "line": 23, "column": 2 } }, "line": 23 }, "1": { "name": "notFound", "decl": { "start": { "line": 1, "column": 0 }, "end": { "line": 5, "column": 1 } }, "loc": { "start": { "line": 1, "column": 0 }, "end": { "line": 5, "column": 1 } }, "line": 1 }, "2": { "name": "errorHandler", "decl": { "start": { "line": 8, "column": 0 }, "end": { "line": 18, "column": 1 } }, "loc": { "start": { "line": 8, "column": 0 }, "end": { "line": 18, "column": 1 } }, "line": 8 } }, "f": { "0": 1, "1": 1, "2": 6 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/email.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 41 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 41 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 0 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 27 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 0 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 77 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 74 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 60 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 1 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 0, "6": 0, "7": 0, "8": 0 }, "branchMap": { "0": { "type": "branch", "line": 9, "loc": { "start": { "line": 9, "column": 1 }, "end": { "line": 9, "column": 1 } }, "locations": [ { "start": { "line": 9, "column": 1 }, "end": { "line": 9, "column": 1 } } ] }, "1": { "type": "branch", "line": 9, "loc": { "start": { "line": 9, "column": 1 }, "end": { "line": 9, "column": 1 } }, "locations": [ { "start": { "line": 9, "column": 1 }, "end": { "line": 9, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 9, "column": 1 }, "end": { "line": 9, "column": 1 } }, "loc": { "start": { "line": 9, "column": 1 }, "end": { "line": 9, "column": 1 } }, "line": 9 }, "1": { "name": "sendEmail", "decl": { "start": { "line": 6, "column": 0 }, "end": { "line": 9, "column": 1 } }, "loc": { "start": { "line": 6, "column": 0 }, "end": { "line": 9, "column": 1 } }, "line": 6 } }, "f": { "0": 1, "1": 0 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/error.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 31 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 37 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 16 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 2 } } }, "s": { "0": 1, "1": 5, "2": 5, "3": 5 }, "branchMap": { "0": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 2 }, "end": { "line": 4, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 2 }, "end": { "line": 4, "column": 2 } } ] }, "1": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 2 }, "end": { "line": 4, "column": 2 } }, "locations": [ { "start": { "line": 4, "column": 2 }, "end": { "line": 4, "column": 2 } } ] }, "2": { "type": "branch", "line": 1, "loc": { "start": { "line": 1, "column": 18 }, "end": { "line": 4, "column": 2 } }, "locations": [ { "start": { "line": 1, "column": 18 }, "end": { "line": 4, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 5 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 4, "column": 2 }, "end": { "line": 4, "column": 2 } }, "loc": { "start": { "line": 4, "column": 2 }, "end": { "line": 4, "column": 2 } }, "line": 4 }, "1": { "name": "Object.<anonymous>.module.exports", "decl": { "start": { "line": 1, "column": 18 }, "end": { "line": 4, "column": 2 } }, "loc": { "start": { "line": 1, "column": 18 }, "end": { "line": 4, "column": 2 } }, "line": 1 } }, "f": { "0": 1, "1": 5 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/jwt.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 36 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 24 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 45 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 17 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 20 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 35 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 13 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 32 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 14 } }, "10": { "start": { "line": 11, "column": 0 }, "end": { "line": 11, "column": 31 } }, "11": { "start": { "line": 12, "column": 0 }, "end": { "line": 12, "column": 48 } }, "12": { "start": { "line": 13, "column": 0 }, "end": { "line": 13, "column": 38 } }, "13": { "start": { "line": 14, "column": 0 }, "end": { "line": 14, "column": 13 } }, "14": { "start": { "line": 15, "column": 0 }, "end": { "line": 15, "column": 10 } }, "15": { "start": { "line": 16, "column": 0 }, "end": { "line": 16, "column": 7 } }, "16": { "start": { "line": 17, "column": 0 }, "end": { "line": 17, "column": 1 } }, "17": { "start": { "line": 18, "column": 0 }, "end": { "line": 18, "column": 0 } }, "18": { "start": { "line": 19, "column": 0 }, "end": { "line": 19, "column": 18 } }, "19": { "start": { "line": 20, "column": 0 }, "end": { "line": 20, "column": 9 } }, "20": { "start": { "line": 21, "column": 0 }, "end": { "line": 21, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 11, "3": 11, "4": 11, "5": 11, "6": 11, "7": 11, "8": 11, "9": 11, "10": 11, "11": 11, "12": 11, "13": 11, "14": 11, "15": 11, "16": 11, "17": 1, "18": 1, "19": 1, "20": 1 }, "branchMap": { "0": { "type": "branch", "line": 21, "loc": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "locations": [ { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } } ] }, "1": { "type": "branch", "line": 21, "loc": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "locations": [ { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } } ] }, "2": { "type": "branch", "line": 3, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 17, "column": 1 } }, "locations": [ { "start": { "line": 3, "column": 0 }, "end": { "line": 17, "column": 1 } } ] }, "3": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 23 }, "end": { "line": 16, "column": 7 } }, "locations": [ { "start": { "line": 4, "column": 23 }, "end": { "line": 16, "column": 7 } } ] }, "4": { "type": "branch", "line": 11, "loc": { "start": { "line": 11, "column": 12 }, "end": { "line": 14, "column": 13 } }, "locations": [ { "start": { "line": 11, "column": 12 }, "end": { "line": 14, "column": 13 } } ] }, "5": { "type": "branch", "line": 12, "loc": { "start": { "line": 12, "column": 27 }, "end": { "line": 12, "column": 34 } }, "locations": [ { "start": { "line": 12, "column": 27 }, "end": { "line": 12, "column": 34 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 11 ], "3": [ 11 ], "4": [ 11 ], "5": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "loc": { "start": { "line": 21, "column": 2 }, "end": { "line": 21, "column": 2 } }, "line": 21 }, "1": { "name": "sign", "decl": { "start": { "line": 3, "column": 0 }, "end": { "line": 17, "column": 1 } }, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 17, "column": 1 } }, "line": 3 } }, "f": { "0": 1, "1": 11 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/permissions.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 31 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 0 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 35 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 46 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 60 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 1 } }, "6": { "start": { "line": 7, "column": 0 }, "end": { "line": 7, "column": 0 } }, "7": { "start": { "line": 8, "column": 0 }, "end": { "line": 8, "column": 18 } }, "8": { "start": { "line": 9, "column": 0 }, "end": { "line": 9, "column": 16 } }, "9": { "start": { "line": 10, "column": 0 }, "end": { "line": 10, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 0, "5": 0, "6": 1, "7": 1, "8": 1, "9": 1 }, "branchMap": { "0": { "type": "branch", "line": 10, "loc": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 2 } }, "locations": [ { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 2 } } ] }, "1": { "type": "branch", "line": 10, "loc": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 2 } }, "locations": [ { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 2 } } ] }, "2": { "type": "branch", "line": 3, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 6, "column": 1 } }, "locations": [ { "start": { "line": 3, "column": 0 }, "end": { "line": 6, "column": 1 } } ] }, "3": { "type": "branch", "line": 4, "loc": { "start": { "line": 4, "column": 33 }, "end": { "line": 6, "column": 1 } }, "locations": [ { "start": { "line": 4, "column": 33 }, "end": { "line": 6, "column": 1 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ], "2": [ 1 ], "3": [ 0 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 2 } }, "loc": { "start": { "line": 10, "column": 2 }, "end": { "line": 10, "column": 2 } }, "line": 10 }, "1": { "name": "scopedItems", "decl": { "start": { "line": 3, "column": 0 }, "end": { "line": 6, "column": 1 } }, "loc": { "start": { "line": 3, "column": 0 }, "end": { "line": 6, "column": 1 } }, "line": 3 } }, "f": { "0": 1, "1": 1 } }, "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js": { "path": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/utils/role.js", "statementMap": { "0": { "start": { "line": 1, "column": 0 }, "end": { "line": 1, "column": 18 } }, "1": { "start": { "line": 2, "column": 0 }, "end": { "line": 2, "column": 19 } }, "2": { "start": { "line": 3, "column": 0 }, "end": { "line": 3, "column": 19 } }, "3": { "start": { "line": 4, "column": 0 }, "end": { "line": 4, "column": 25 } }, "4": { "start": { "line": 5, "column": 0 }, "end": { "line": 5, "column": 19 } }, "5": { "start": { "line": 6, "column": 0 }, "end": { "line": 6, "column": 2 } } }, "s": { "0": 1, "1": 1, "2": 1, "3": 1, "4": 1, "5": 1 }, "branchMap": { "0": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 2 } }, "locations": [ { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 2 } } ] }, "1": { "type": "branch", "line": 6, "loc": { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 2 } }, "locations": [ { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 2 } } ] } }, "b": { "0": [ 1 ], "1": [ 1 ] }, "fnMap": { "0": { "name": "Object.<anonymous>", "decl": { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 2 } }, "loc": { "start": { "line": 6, "column": 2 }, "end": { "line": 6, "column": 2 } }, "line": 6 } }, "f": { "0": 1 } } } }
{ "bail": 0, "changedFilesWithAncestor": false, "collectCoverage": true, "collectCoverageFrom": [], "coverageDirectory": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/coverage", "coverageProvider": "v8", "coverageReporters": [ "json", "text", "lcov", "clover" ], "detectLeaks": false, "detectOpenHandles": true, "errorOnDeprecated": false, "expand": false, "findRelatedTests": false, "forceExit": true, "globalSetup": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/setupTests.js", "globalTeardown": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/src/tearDownTests.js", "json": false, "lastCommit": false, "listTests": false, "logHeapUsage": false, "maxConcurrency": 5, "maxWorkers": 1, "noStackTrace": false, "nonFlagArgs": [], "notify": false, "notifyMode": "failure-change", "onlyChanged": false, "onlyFailures": false, "passWithNoTests": false, "projects": [], "reporters": [ [ "default", {} ], [ "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/jest-stare/lib/index.js", {} ] ], "rootDir": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos", "runTestsByPath": false, "skipFilter": false, "testFailureExitCode": 1, "testPathPattern": "", "testSequencer": "/home/sundaypriest/Desktop/projects/000.softgap technologies/wissenpos/node_modules/@jest/test-sequencer/build/index.js", "testTimeout": 60000, "updateSnapshot": "new", "useStderr": false, "watch": false, "watchAll": false, "watchman": true }